Resultados de búsqueda para ruby
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á […]
Haggis Ruby 2024 - Edimburgo, Escocia
Una década después de la última Scottish Ruby Conference, volvieron las conferencias Ruby a Escocia. El 24 de Octubre de 2024 tuve el gusto de asistir a Haggis Ruby, una conferencia de un día con un sólo track de charlas. Se realizó en el centro de la ciudad en The Royal Society of Edinburgh. A continuación dejo algunas impresiones basadas en las notas que saqué durante la conferencia. El evento arrancó con James Bell de la organización dando la bienvenida. Comentó sobre el edificio, un lugar tradicional donde justo había una exhibición de mujeres en la ciencia que los asistentes […]
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 […]
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 […]
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 […]
[Error Ruby] mocha/integration/mini_test/adapter.rb:26:in `included': uninitialized constant MiniTest (NameError)
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
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 […]
Se viene Ruby 3.2: Ruby muy eficiente y rápido, gracias en parte a Shopify
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 […]
Quinta edición del "Pickaxe": Programming Ruby 3.2
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 […]
Enlaces Ruby - Junio 2021
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 […]
Semantic Logger - framework de logueo enriquecido para Ruby y Rails
Semantic Logger es un framework enriquecido de logueo que permite producir resultados legibles para humanos y para máquinas 🤖 Entre las características principales listan: Archivos de log con texto coloreado para que los humanos lo podamos leer. Archivos de log JSON con toda la información semántica para alimentar a las máquinas. Escribir a múltiples destinos a la misma vez Enviar los logs a un sistema centralizado de logueo, via JSON o adaptadores incluidos. Como implementa la interfaz estándar de logueo de Ruby, se puede reemplazar el log normal con Semantic Logging. Lo probé con el cliente oficial de Elasticsearch para […]
Mini pique: Ruby - Usar las notificaciones del sistema para notificarnos de tareas
Esto es más bien una idea que se me ocurrió trabajando, pero me pareció buena compartirla como mini pique. Por lo menos para no olvidarme en el futuro que esto es una posibilidad, al escribir un post al respecto me queda más grabado en la memoria. La gema libnotify nos permite interactuar con la biblioteca libnotify de nuestro sistema y generar notificaciones de manera muy sencilla. Este código: > require 'libnotify' > Libnotify.show( body: "Hola Mundo", summary: "Picando Código informa", icon_path: "/usr/share/icons/Humanity/apps/32/terminal.svg" )> require 'libnotify' > Libnotify.show( body: "Hola Mundo", summary: "Picando Código informa", icon_path: "/usr/share/icons/Humanity/apps/32/terminal.svg" ) Genera esta notificación: […]
Enlaces Ruby - Mayo 2021
Colección de los enlaces interesantes sobre Ruby que encontré durante el mes de mayo: Noticias sobre el lenguaje y programación Ruby general: 💎 Ya he compartido varios enlaces sobre Ractors en Ruby 3, pero otra característica nueva es la clase Fiber::SchedulerInterface. Nos permite escribir schedulers más avanzados basados en bucles de eventos para entrada y salida sin bloquear en Ruby (a lo frameworks como EventMachine). Recientemente resurgió un artículo muy bueno sobre el tema Ruby 3.0 and the new FiberScheduler interface. Mientras leía esto me colgué a probar cosas y tengo algunas ideas para implementar más cosas, tengo investigación por […]
Comentarios recientes