Archivo: Programación | Picando Código
Nada que ver en las audaces aventuras de desarrollar un proyecto de código abierto popular

Vuelve un poco de tranquilidad a la parte de mi que se estresa cuando tiene asuntos pendientes. Patchstack marcó como corregida la vulnerabilidad en List Category Posts en la versión 0.92.0 del plugin 🥳 Wordfence todavía no actualizó su sitio y sigue teniendo mensajes alarmantes para las pobres personas que decidan instalar este plugin. Pero allá ellos (Actualizado unos días después: ya marcan la vulnerabilidad como parcheada en 0.92.0). Desde hace un buen tiempo nos han venido reportando "vulnerabilidades" en el código. Pero siempre con un detalle: un usuario malicioso tiene que tener acceso al escritorio de WordPress para poder editar […]
Publicado List Category Posts v0.92.0 con mejoras en "seguridad"

Desde mayo venimos luchando con Wordfence y Patchstak, que reportaron un problema de seguridad en el plugin de WordPress List Category Posts. Con Klemens, el otro "mantenedor" que ha venido aportando mucho al código del plugin, venimos conversando del tema por correo electrónico. El "fallo de seguridad" o la "vulnerabilidad" que reportan es que un usuario con acceso al sistema de archivos y permisos de al menos editar un post o página, puede incluir PHP malicioso. Ahora, un usuario que tiene acceso al sistema de archivos y a editar contenido, puede hacer mucho más daño por otros lados que con […]
Wubular - expresiones regulares corriendo Ruby en el navegador

Una herramienta que he usado mucho a la hora de escribir expresiones regulares es Rubular (más en Expresiones Regulares en Ruby). En agosto se presentó Wubular, una herramienta inspirada en Rubular para escribir y testear expresiones regulares en el navegador web. Si bien Rubular es una herramienta súper práctica, tiene sus problemas. Para empezar, usa Ruby 2.5.9, una versión anciana de Ruby (el soporte para la rama 2.5 terminó en 2021), y tampoco es de código abierto. Por otra parte, sigue el modelo tradicional web de enviar un pedido POST a un servidor para parsear el resultado. Desde la versión […]
Script Ruby para elegir una transmisión en vivo del canal oficial de los Power Rangers en YouTube y abrirlo en VLC

El canal oficial de Power Rangers en YouTube tiene tres transmisiones en vivo diarias. También tiene un montón de material como los episodios completos y temporadas enteras de la serie clásica y sucesivas versiones. A veces está bueno engancharse a mirar una de estas transmisiones. Es como emular la forma en que uno miraba televisión en otras épocas, prendíamos la tele y mirábamos lo que había, sin tener idea el número de temporada o episodio. Procrastinando una noche en la que debía acostarme temprano para estar bien descansado para un evento que me venía produciendo bastante ansiedad, me puse a […]
Arreglada vulnerabilidad CVE-2025-47636 en List Category Posts

Ayer publiqué la versión 0.91.0 de List Category Posts, el plugin para WordPress. Hace un tiempo habían reportado una "vulnerabilidad crítica", y se me fue pasando hasta que se hizo pública. Varios usuarios me escribieron preocupados por el asunto. Es entendible, que si un sistema te avisa que estás usando un plugin con una vulnerabilidad crítica, entiendas que es grave. Sin embargo, para hacer uso de esa vulnerabilidad, el sistema ya tiene que estar comprometido. La persona con intenciones maliciosas necesita de antemano tener acceso al servidor para poder subir un archivo. También necesita tener un usuario autenticado, con acceso […]
Actualización de mullvadrb - Bloqueadores de contenido DNS

Publiqué una nueva actualización a la gema mullvadrb, la interfaz de usuario de terminal para Mullvad VPN en Ruby. La herramienta permite usar Wireguard o la interfaz de línea de comando mullvad como backend. Aprolijé un poco el código extrayendo las opciones a su propio módulo Settings. Ahí puse todo el código relacionado a configuración, backend, y lenguajes. También le agregué funcionalidad nueva. Una de las opciones de la interfaz de línea de comando es bloqueadores de contenido DNS. Entre las opciones a bloquear tenemos anuncios, trackers, malware, sitios de apuestas y contenido adulto. Implementé un menú de opciones de TTY::Prompt […]
Mi juego para I, REBEL: A JEFF MINTER GAME JAM por Atari

La semana pasada participé del concurso de desarrollo organizado por Atari: I, Rebel: A Jeff Minter Game Jam. Escribí sobre Jeff Minter y Llamasoft: The Jeff Minter Story en marzo, cuando estaba en Uruguay. Por participar en el Game Jam, Atari nos envió códigos para descargar el juego en nuestra plataforma preferida, por eso lo estuve jugando en mi Switch (cuando llegué a Escocia me esperaba la versión física junto a la de Tetris Forever). La premisa del game jam era la siguiente: Crea un juego que Jeff Minter va a amar Desbloquea tu Jeff Minter interior para crear un juego […]
Reemplazando los Widgets de WordPress

El diseño actual del blog cuenta con varios "widgets" nativos de WordPress. Estoy usando los widgets "clásicos", de antes que agregaran toda la infraestrtuctura basada en bloques. Dos de estos se veían bastante mal con el diseño por defecto, Archivos y Categorías. Éstos publican un elemento HTML select con los respectivos contenidos esperados: Archivos - una lista de selección con los meses desde que existe el blog como para entrar a ese archivo Categorías - una lista jerárquica de las categorías del contenido del blog Mi objetivo entonces era encontrar una forma de editar el HTML y/o CSS como para […]
Grupos y capturas reemplazando texto con expresiones regulares

Las expresiones regulares nos permiten agrupar patrones y "capturarlos". Luego podemos usar el valor de esos grupos con "back references" (¿referencias posteriores?). Últimamente vengo usando cada vez más replace-regexp en Emacs y aprovechando que tuve que hacer uso de estas características, lo comparto por acá. Estaba editando código Ruby y dado un Array de Hashes, quería reemplazar todas las llaves en los Hashes del tipo String a Symbol: { "nombre": "Fernando" } => { nombre: "Fernando" } En Emacs, al presionar Alt x - replace-regexp Enter entramos a un mini-buffer donde tenemos que ingresar una expresión regular. Lo que quería […]
Aventuras con resaltado de sintaxis en el blog

Una de las cosas que me llevó investigación en los principios del blog fue cómo mostrar código fuente con resaltado de sintaxis en los posts. Desde un principio quería compartir cosas que iba aprendiendo a lo largo del camino con programación. Así que mostrar código de manera amigable, era uno de los requisitos. En ese entonces ya había varias soluciones, la mayoría metiendo kilos de código JavaScript y CSS extra en el sitio, cosa que no quiero hacer. Incluso estos días, encontré que la situación no es mucho mejor. Sigo buscando la manera de hacer las cosas en este sitio […]
Mini pique: Sacar capturas de pantalla en juegos de Steam con control XBox 360

Cómo sacar captura de pantallas con el control de XBox 360 mientras jugamos un juego de Steam: + Apretando el botón de guía de XBox y el gatillo derecho (o RT), Steam guarda una imagen del juego que estamos jugando. Es el equivalente a apretar la tecla F12 en el teclado, el atajo de teclado por defecto para sacar capturas. Esto lo aprendí recientemente jugando con la laptop conectada al televisor con mi control de XBox 360. Como juego mucho más al Nintendo Switch que con la computadora, estoy acostumbrado a guardar imágenes del juego con un botón del control […]
Actualización de mullvadrb - soporte para varios idiomas en Ruby

En éstos días publiqué un par de versiones nuevas de mullvadrb, la interfaz de usuario de terminal para Mullvad VPN con Ruby. Me parecía que el estado de la conexión necesitaba estar más claro, así que agregué algunos saltos de línea y mejoras visuales. Particularmente cuando la VPN está desconectada. Con la magia de Ruby, obtengo el estado de mullvad status -v y meto unos encantos encadenados como reject, gsub y push de "\n" y queda mucho más visible el estado actual. Lo otro importante que le agregué fue el soporte para internacionalización de la aplicación. Así que ahora está […]
WordPress en 2024

Este no ha sido un buen año para WordPress. No voy a entrar en detalle de lo que ha pasado, una búsqueda rápida online da la información necesaria para leer sobre el tema. Pero esto ha llevado tanto a mucha gente a renunciar a Automattic, como a reconsiderar el uso de WordPress en sí. Personalmente vengo pensando migrar de WordPress a otra cosa desde hace años. El blog empezó en Blogger en 2007. Después de poco tiempo, migré a un hosting en linuxuruguay y eventualmente hosting propio con WordPress. Al ver que pensaba seguir con el blog, necesitaba tener control […]
Escribí una interfaz de usuario de terminal para Mullvad VPN con Ruby

Desde hace un tiempo vengo usando Mullvad VPN como proveedor de VPN. Mullvad cuenta con una aplicación bastante práctica que funciona en Android, Linux y demás sistemas operativos populares. En su momento, no estaba disponible para Raspberry Pi (y creo que ahora tampoco). Encontré que podía usar Mullvad con WireGuard. La aplicación usa el protocolo WireGuard por defecto. Cuando seguí las instrucciones en el enlace, me quedaron un montón de archivos de servidores en /etc/wireguard. Los archivos son de la forma ie-dub-wg-101.conf, cl-scl-wg-001.conf, etc. Siguen el formato código de país, ciudad, interfaz (wg para WireGuard, pero podría ser OpenVPN), y […]
Costumbres del código: [Lenguaje del teclado] – Parte 3

Hace unos 16 años, escribí un par de posts sobre el lenguaje que usaba en el teclado de mi computadora. Así fue como descubrí eventualmente la distribución de teclado que vengo usando desde hace tiempo. Cómoda para escribir en español, en inglés y programar en teclados con distribución Inglés de Estados Unidos. En Costumbres del código: [Lenguaje del teclado] , contaba cómo empecé usando un atajo de teclado para cambiar el idioma del teclado de inglés a español. En Costumbres del código: [Lenguaje del teclado] – Parte 2 había aprendido a usar la distribución de teclado Inglés alternativo internacional gracias […]
Comentarios recientes