Archivo: Programación | Picando Código
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 […]
¡Feliz día del programador!
¡Feliz día del programador! Hoy 12 de setiembre es el día número 256 (28) del año por ser la cantidad de valores representables en un byte de datos (13/9 en los años comunes y 12/9 años bisiestos). Por esto se festeja el día del programador. Como es tradición en el blog, escribo un post en principio deseando feliz día a todos los programadores y las programadoras que lo lean, y les pregunto: ¿en qué andan? ¿qué lenguajes o tecnologías nuevas están usando este año? Haciendo un repaso en mi caso se repite bastante lo que dije el año pasado. Pero […]
Más experimentos con DragonRuby
Desde que empecé mi aventura con DragonRuby, programando una implementación de Tetris, seguí jugando con la herramienta. Todas las semanas he ido pensando cosas divertidas para programar. Generalmente se me ocurría alguna visualización en particular, o veía algo que me hacía pensar "¿cómo se implementará eso en DragonRuby?", y me desafiaba a hacerlo. Seguí con la tendencia que empecé escribiendo Tetris: no buscar si ya existía una forma ya conocida de hacer algo, sino implementarlo de cero. Esto me obligaba a aprender cosas nuevas e intentar entenderlas a nivel más bajo. DragonRuby ofrece un montón de aplicaciones de ejemplo y […]
Programando Tetris con DragonRuby
En octubre de 2016 me dispuse a aprender a programar videojuegos con Ruby usando la biblioteca Gosu. Siempre me gustó el juego Tetris y me pareció un buen ejemplo como primer proyecto. Es relativamente simple como para llegar al punto de declararlo "terminado" sin sentirme abrumado. En el proceso, podía aprender lo suficiente de las herramientas como para tener una idea mínima para arrancar algo nuevo. Todavía tengo el código que escribí en ese momento. No es buen código, pero dado que lo escribí para experimentar y aprender, no lo juzgo tanto. Conseguí recursos gráficos libres de internet, y en […]
Publicado Gleam v1.0.0
Esta semana se publicó la versión 1.0.0 del lenguaje de programación Gleam, un "lenguaje amigable para hacer sistemas que escalan con tipado seguro". Ya he escrito sobre Gleam en el blog antes, pero no he escrito tanto código como hubiera querido. Es uno de los tantos lenguajes que me gustan y con los que me gustaría programar más. Gleam cuenta con "el poder de un sistema de tipado, la expresión de la programación funcional, y la seguridad del entorno de ejecución tolerante a fallas y de alta concurrencia de Erlang, con una sintaxis moderna y familiar". El 4 de marzo […]
Actualización en SuperTimeTracker.com
Feliz día de la marmota, y felices 10 años a mi proyecto SuperTimeTracker.com 🎂 Aprovechando que tuve que renovar el dominio (pasando por esa etapa en que uno se cuestiona: ¿debería volver a renovar el dominio o darme por vencido y abandonarlo?), actualicé un poco mi "proyecto de fin de semana": Super Time Tracker es una aplicación web muy simple y minimalista para gestionar el tiempo de tareas. No necesitas crear una cuenta, grupo o clientes. No necesitas compartir tu correo electrónico, nombre o número de teléfono (en su momento era una aplicación para Firefox OS). Sólo traquea tu tiempo. […]
Novedades de IRB en Ruby 3.3: Autocompletado basado en tipos, debug y más
Estamos a pocos días del 25 de diciembre, lo que significa versión nueva de Ruby. Ya podemos ir probando Ruby 3.3 con ruby-3.3.0-preview3. Una de las tantas novedades de esta versión es IRB 1.9, con varias cosas nuevas. Autocompletado basado en tipos Por defecto, IRB usa expresiones regulares para el autocompletado con IRB::RegexpCompletor. El nuevo IRB::TypeCompletion, usa análisis de tipo con Prism (parser introducido en Ruby 3.3) y RSB (el sistema de tipos presentado en Ruby 3). Para habilitar IRB::TypeCompletion, tenemos que ejecutar IRB con el parámetro --type-completor: $ irb --type-completor O agregar el siguiente código en nuestro archivo ~/.irbrc: […]
Paquete de eBooks: Ruby on Rails de Pragmatic Programmer
Humble Bundle tiene un nuevo paquete de ebooks sobre Ruby y Ruby On Rails de Pragmatic Programmer. Pragmatic Programmer publica muy buenos libros de Ruby, y este es un excelente paquete. Los rumores de la muerte de Ruby y Rails han sido muy exagerados. No sólo está vivo y coleando, sino que es un lenguaje en constante evolución (y se paga muy bien). Es una excelente oportunidad para adentrarse en el hermoso lenguaje de programación que es Ruby. Si bien este paquete incluye la cuarta versión del "Pickaxe" (Programming Ruby 1.9 & 2.0), es la última publicada hasta el momento […]
Usar List Category Posts en WordPress para listar sub-páginas
Hace un tiempo tenía instalado en este blog el plugin de WordPress Subpage Listing. Es un plugin bastante simple que permite listar las sub-páginas de una página. Dada una página superior con páginas anidadas, si poníamos el siguiente comentario en el contenido: <!--%subpages%--> se generaba una lista de las páginas anidadas con enlaces a cada una. Usaba este plugin en páginas como Acerca De, donde listo la Política de Privacidad, Licencia y más, que son páginas anidadas de "Acerca De". Sin embargo, el plugin ha sido completamente abandonado con la última actualización hace 11 años. Así que en su momento […]
Comentarios recientes