Archivo: Programación | Picando Código - Part 5

Mini pique - Ruby 3: Hash#except

Jueves, 3 de diciembre de 2020
Mini piques

Algo nuevo que se viene en Ruby 3, Hash#except, un método que nos devuelve un hash nuevo con todas las llaves menos las que pasamos como parámetro: head :001 > data = {name: "Fernando", age: 35, height: 175} => {:name=>"Fernando", :age=>35, :height=>175} head :002 > data.except(:age) => {:name=>"Fernando", :height=>175} Fuente.

Nuevos validadores de Cédula de Identidad Uruguaya: Prolog y Rust

Martes, 15 de septiembre de 2020
Validador de Cédulas de Identidad Uruguaya

Se siguen agregando versiones en más lenguajes del validador de cédulas de identidad. Gracias a Bruno Cattáneo, tenemos una versión nueva en Prolog. Pueden ver el código fuente y ejemplos de cómo usarlo en el enlace. Inspirado por la versión de Bruno, finalmente me puse a escribir una versión que hacía tiempo quería escribir: Rust. El código para validar la cédula es lo suficientemente simple como para probar un lenguaje de programación nuevo. Hace tiempo que quería entrarle a Rust, así que fue una buena excusa. Me costó un poco, aprendí algo de Rust en el camino, pero tendría que […]

Private GitHub Header - Extensión de Firefox para diferenciar repositorios privados y públicos

Miércoles, 29 de julio de 2020
GitHub

La única pista visual que tenemos de que un respositorio sea privado en GitHub es una etiqueta al lado del nombre. Para quienes pasamos mucho tiempo trabajando en GitHub, a veces corremos el riesgo de pensar que un grupo acotado de personas va a ver un mensaje, y podemos estar trabajando en un repositorio público sin darnos cuenta (y viceversa). Greg Back, colega en el trabajo, desarrolló esta extensión para Firefox que cambia el color del encabezado en la web de GitHub para que sea más claro: Private GitHub Header. La extensión se puede instalar desde el sitio web de […]

Se acerca RuboCop 1.0

Miércoles, 27 de mayo de 2020
RuboCop

RuboCop es la herramienta de facto para analizar y formatear código en Ruby. Con miras de publicar la versión 1.0, Bozhidar Batsov -autor de Rubocop-, realizó una encuesta a la comunidad Ruby. RuboCop viene con un montón de valores por defecto, y la idea de la encuesta era medir lo que se viene usando para entender qué valores por defecto valía la pena cambiar basados en su uso y la frustración o satisfacción de la comunidad. En los últimos años se había evitado cambiar valores por defecto en un esfuerzo por contener la fricción durante actualizaciones de RuboCop. Pero con […]

Piques Git - cherry pick y git clean

Martes, 21 de abril de 2020
Git

Git es una herramienta fundamental en mi trabajo diario desde hace unos cuantos años, pero todavía sigo aprendiendo cosas nuevas todo el tiempo. Distintos proyectos tienen distintos procesos de  trabajo, lo que nos ayuda a aprender cosas que no conocíamos y que hacen más práctico el día a día. En este post voy a escribir sobre algunas cosas nuevas que empecé a usar seguido recientemente gracias a mi trabajo. Eliminar todos los archivos nuevos que no han sido agregados a staging Vengo trabajando bastante en generación de código. Esto da lugar a mucho ensayo y error, poco probable que el […]

Nuevas versiones de Ruby y fin de soporte para Ruby 2.4

Miércoles, 1 de abril de 2020
Ruby

Ayer 31 de marzo se publicaron nuevas versiones con parches de seguridad para Ruby 2.4, 2.5, 2.6 y 2.7. Las versiones de Ruby 2.5.8, 2.6.6 y 2.7.1 cuentan con parches de seguridad para dos vulnerabilidades: CVE-2020-16255: Unsafe Object Creation Vulnerability in JSON (Additional fix) Es un arreglo adicional a una vulnerabilidad de creación no segura de objetos en JSON. La gema json incluida con Ruby puede ser forzada a crear objetos arbitrarios en un sistema. El mismo problema se había corregido en CVE-2013-0269, pero estaba incompleto. Ese arreglo corregía JSON.parse(data_del_usuario), pero no otros tipos de procesamiento de JSON como JSON(data_del_usuario) […]

endoflife.date - conoce cuándo se termina de dar soporte a distintas tecnologías

Lunes, 25 de noviembre de 2019
End Of Life

El sitio web endoflife.date se dedica a mantener enlaces para conocer las fechas de "End Of Life" (fin de vida) de varias herramientas y tecnologías. End Of Life generalmente quiere decir que el software no se encuentra más bajo desarrollo, y no recibirá actualizaciones ni siquiera de seguridad. La razón por la que existe el sitio es porque dicha información está generalmente bastante oculta en algunos casos. La idea surgió de un rant en Twitter donde el autor compara la información sobre versiones en PHP con la de Ruby, Go, Ubuntu, Python y más. Algunas tecnologías hacen esta información bastante […]

ghpreview - Gema Ruby para previsualizar archivos Markdown con el estilo de GitHub

Lunes, 28 de octubre de 2019
Ruby

La gema ghpreview es una herramienta que te permite previsualizar un archivo Markdown localmente con el estilo de GitHub: Cuando escribes el README para tu proyecto, quieres poder previsualizar el Markdown localmente antes de madnarlo a GitHub. ghpreview es una utilidad de línea de comando que abre tu archivo Markdown en un navegador web. Usa el estilo de GitHub y (opcionalmente) actualiza automáticamente cada vez que guardes el archivo fuente. Corría el año 2012 y estaba trabajando en Neo (antes conocida como "New Context"), una empresa multinacional que había adquirido Cubox, empresa uruguaya donde estaba trabajando. Neo también había adquirido […]

¡Feliz día del Programador!

Viernes, 13 de septiembre de 2019
Feliz día del programador

¡Feliz día del programador colegas! El día del programador se celebra en 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). Como es tradición, aprovecho la excusa para hacer un repaso de en qué ando desde el último día del programador. Hablemos de programación: Ruby sigue siendo mi lenguaje principal. Recientemente he estado muy atento a Crystal: un lenguaje con tipos estáticos inspirado en Ruby. En este post, escribí sobre cómo crear un bot de Telegram con un cliente en Crystal, […]

Gamesdb - Gema Ruby para la API de TheGamesDB

Lunes, 2 de septiembre de 2019
GamesDB

El sábado pasado pensaba irme de aventuras por algún castillo de Escocia. Pero me desperté con un dolor de garganta tremendo que se transformó en resfrío y no me dejó salir todo el fin de semana. Qué mejor que ponerme a programar y actualizar una de mis gemas Ruby... TheGamesDB es una base de datos online de videojuegos. El sitio sirve como servicio frontend que se enlaza a una base de datos de metadata de videojuegos y arte de alta calidad. La base de datos puede ser usada en varias aplicaciones a través de su API (PC's como centro multimedia, […]

Versión 0.3 de Gleam ✨ – el lenguaje de programación funcional estáticamente tipado en BEAM

Viernes, 9 de agosto de 2019
Gleam

En abril se publicó la primera versión pública de Gleam. Esta semana se publicó la versión 0.3 que trae varios cambios desde entonces. Namespaces de módulos Los módulos se pueden contener en espacios de nombres permitiendo el uso de nombres de módulos cortos y convenientes sin riesgo de colisiones con otros módulos de Gleam o Erlang. Para usar espacios de nombre creamos un directorio con el nombre de namespace en el directorio src/ y ponemos el módulo ahí. Como ejemplo: src/ └── vgclub ├── persona.gleam └── consolas ├── nintendo.gleam ├── sega.gleam └── atari.gleam Una vez creados, los módulos se pueden […]

Versión 1.0 de ci_uy: La gema Ruby para validar números de cédula de identidad

Martes, 30 de julio de 2019
ci_uy en RubyGems

Actualicé la gema ci_uy a la versión 1.0.0. Bueno en verdad después de publicarla a RubyGems le agregué unos metadatos al archivo gemspec para que enlazara al Changelog y otros recursos, tuve que "yankear" 1.0.0 y subir una versión nueva. Así que la versión actual es 1.0.1. La funcionalidad de la gema sigue más o menos igual desde hace años, pero dados unos cambios recientes, decidí definir la nueva versión como "estable". Los cambios en código fueron para usar frozen string literals, usando strings inmutables y en vez de ir cambiando los Strings, hacer todo con funciones. También agregué documentación […]

Tourmaline - Framework para bots de Telegram en Crystal

Miércoles, 19 de junio de 2019
Tourmaline – Framework para bots de Telegram en Crystal

Tourmaline es un framework desarrollado en el lenguaje de programación Crystal. Con la reciente versión 0.70, alcanzó soporte completo para la API de Bots de Telegram: Framework para la API (y ojalá pronto Cliente) de Bots de Telegram en Crystal. Basado fuertemente en Telegraf, esta implementación en Crystal permite que tu bot de Telegram sea escrito en un lenguaje tanto hermoso como rápido. Benchmarks vendrán pronto. ¡Ya podemos escribir nuestro bot de Telegram en Crystal! Para empezar a usar Tourmaline, tenemos que agregarlo a los shards de nuestra aplicación en el archivo shard.yml. dependencies: tourmaline: github: watzon/tourmaline version: ~> 0.7.0 […]

Actualización del validador de Cédula de Identidad Uruguaya

Miércoles, 5 de junio de 2019
Validador de Cédulas de Identidad Uruguaya

Hace unos años creé mi primera gema en Ruby: Un validador de cédulas de identidad uruguaya. Poco más de un año después, escribí una versión en JavaScript. Desde entonces han surgido un montón de versiones más del validador de cédulas de identidad en distintos lenguajes. Recientemente actualicé el sitio web del proyecto: Validación Cédula Identidad Uruguaya La idea principal de las bibliotecas en Ruby, JavaScript y demás, es validar números de cédula ingresador por un usuario en un sitio/aplicación. La motivación de escribir la primera versión fue la cantidad de sitios uruguayos que lo hacen mal (ver entrada). Así que […]

Gleam - Nuevo lenguaje de programación funcional estáticamente tipado en BEAM

Miércoles, 17 de abril de 2019
Gleam

El pasado lunes 15 de abril se publicó la primera versión de Gleam (0.1): Gleam es un lenguaje de programación funcional estáticamente tipado diseñado para escribir sistemas concurrentes mantenibles y escalables. Compila a Erlang y tiene interoperabilidad directa con otros lenguajes de BEAM (la máquina virtual de Erlang) como Erlang, Elixir y LFE. Obviamente es un lenguaje bastante nuevo, así que no está listo para usar en producción. Está interesante y ya se puede probar, programar alguna cosa divertida y aprender a usarlo. El código fuente está disponible en GitHub bajo licencia Apache 2.0, y chat del proyecto se encuentra […]

Toasty!