Archivo: Ruby | Picando Código

Aventuras con resaltado de sintaxis en el blog

Jueves, 14 de noviembre de 2024

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 […]

Actualización de mullvadrb - soporte para varios idiomas en Ruby

Jueves, 7 de noviembre de 2024
Mullvardb en Español

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á […]

Escribí una interfaz de usuario de terminal para Mullvad VPN con Ruby

Miércoles, 23 de octubre de 2024
mullvadrb

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 […]

Más experimentos con DragonRuby

Miércoles, 10 de abril de 2024
Experimentos 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

Lunes, 11 de marzo de 2024
Fertris v0.1

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 […]

Novedades de IRB en Ruby 3.3: Autocompletado basado en tipos, debug y más

Viernes, 17 de noviembre de 2023
Ruby

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

Lunes, 13 de noviembre de 2023
eBooks Ruby on Rails

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 […]

[Error Ruby] mocha/integration/mini_test/adapter.rb:26:in `included': uninitialized constant MiniTest (NameError)

Jueves, 27 de julio de 2023
Ruby

Hoy me encontré con este error ejecutando unos test en Ruby: /opt/hostedtoolcache/Ruby/3.2.2/x64/lib/ruby/gems/3.2.0/gems/mocha-2.0.4/lib/mocha/integration/mini_test/adapter.rb:26:in `included': uninitialized constant MiniTest (NameError) Mocha::ExpectationErrorFactory.exception_class = ::MiniTest::Assertion ^^^^^^^^^^^ Did you mean? Minitest Así que salí a buscar el repositorio de código de mocha (una biblioteca para mocks y stubs en Ruby), y encontré que el problema ya había sido reportado. En las notas de la versión más reciente de Minitest, avisan que la capa de compatibilidad con MiniTest ahora se carga únicamente al estar presente la variable de ambiente MT_COMPAT. Como se puede ver en el error, mocha hace un llamado a MiniTest en la línea 26 […]

Usando la nueva gema debug para 'debuggear' en Ruby

Jueves, 8 de junio de 2023
Ruby

Desde hace poco empecé a usar el debugger nuevo en Ruby 3: debug. Tengo un vago recuerdo de que cuando empecé a programar con Ruby, el debugger era medio complicado. Si no recuerdo mal debug o ruby-debug era el debugger original, pero después cayó en desuso (o el código no se mantenía) y empecé a usar byebug. Pero esto pasó hace más de 10 años así que no confío mucho en mis recuerdos vagos (que no es lo mismo que "no confío mucho en mis recuerdos, vagos"). Leyendo sobre debug en el blog de Koichi Sasada, su programador principal, parece […]

Nueva versión de la gema para TheGamesDB

Viernes, 20 de enero de 2023
Ruby: GamesDB 2.1

Esta semana actualicé mi gema Ruby gamesdb a la versión 2.1.0. Incluye cambios de mantenimiento, como asegurar compatibilidad con las versiones nuevas de Ruby (3.2) y actualizaciones en los tests. Refactoricé un poco el código extrayendo varias funciones utilitarias de manejo de imágenes y más a su propio módulo Gamesdb::Utils. Manejo de errores La nueva funcionalidad más importante es el manejo de errores. Anteriormente, en caso de error de conexión o en el pedido HTTP, el código levantaba la excepción directamente de Net::HTTP o cualquier otro error en la función principal perform_request. Pero si había un error desde la API […]

Se viene Ruby 3.2: Ruby muy eficiente y rápido, gracias en parte a Shopify

Viernes, 23 de diciembre de 2022
Ruby

Se viene Ruby 3.2, la nueva versión de Ruby que estaría disponible a partir de el próximo día de Navidad. Shopify es una de las empresas que ha venido apoyando mucho al lenguaje de programación, además de tener la aplicación Ruby on Rails más grande del mundo (o así lo afirman). Ufuk Kayserilioglu, Gerente de Ingeniería en el equipo de Infraestructura de Shopify, compartió que "hay tantas cosas geniales en 3.2 que no pudimos esperar al día de la publicación, y ya las usamos en los pedidos a Shopify". Quedé bastante emocionado con todo lo que describe, y lo hace […]

Procesando Feeds RSS de TinyRSS para consumo OPML

Martes, 15 de noviembre de 2022
Ruby RSS

Hace un buen tiempo usaba TinyRSS, un lector RSS web alojado en mi servidor. Pero no recuerdo si fue por actualizar PHP o el código de Tiny Tiny RSS mismo, se rompió la instalación. Decidí volver a usar alguna aplicación de escritorio, por el momento estoy usando Akregator en KDE, pero vi que Thunderbird también permitía la importación de Feeds RSS. Como no quería ingresar los feeds a los que estaba suscripto de a uno y a mano, entré al phpMyAdmin de mi servidor, y me fijé en qué tabla se encontraban mis feeds. La tabla en cuestión es ttrss_feeds, […]

Quinta edición del "Pickaxe": Programming Ruby 3.2

Jueves, 10 de noviembre de 2022
Programming Ruby 3.2 (5th Edition)

El libro "Programming Ruby", conocido como Pickaxe por su tapa, ha sido llamado "la referencia definitiva" de Ruby. Desde hace varios años se han ido publicando nuevas ediciones con las actualizaciones pertinentes a nuevas versiones del lenguaje. Escrito originalmente por Dave Thomas, en Febrero de 2023 verá una versión actualizada para Ruby 3.2 (que debería ser publicado el próximo día de Navidad). El encargado de esta versión actualizada es Noel Rappin, autor de varios libros técnicos como Rails 5 Test Prescriptions y Modern Front End Development With Rails. El título se encuentra actualmente disponible en versión beta en el sitio […]

Documental - Two Cartoon Foxes: Remembering Why The Lucky Stiff

Jueves, 19 de agosto de 2021
_why foxes

El 19 de agosto de 2009, Why the Lucky Stiff desapareció de la comunidad Ruby. Hoy se celebra el Whyday, donde la comunidad Ruby recuerda las contribuciones de _why al ecosistema y la cultura que la identifica. Para más información pueden visitar el sitio Whyday.org o la cuenta en Twitter @celebratewhyday o seguir el hashtag #whyday.

Enlaces Ruby - Junio 2021

Martes, 6 de julio de 2021
Ruby

Colección de los enlaces interesantes sobre Ruby que encontré durante el mes de junio: Noticias sobre el lenguaje y programación Ruby general: 💎 En este post Kingsley Silas explica el camino que usa Ruby para encontrar métodos: Ruby usa una “forma” o “patrón” definidos para determinar el método correcto a llamar y el momento correcto para devolver un error “no method erro”, y podemos llamar a esto el “Ruby Method Lookup Path”. En este tutorial, nos vamos a sumergir en la búsqueda de métodos de Ruby. Al final, vas a tener un buen entendimiento de cómo Ruby recorre la jerarquía […]

Toasty!