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

Mini pique – Ruby Enumerable#tally

10 de diciembre de 2020
Mini piques

¡Ruby es genial! 😁 Esta función está disponible a partir de Ruby 2.7.0: Enumerable#tally – Hace la cuenta de una colección, e.g., cuenta las ocurrencias de cada elemento. Devuelve un hash con los elementos de la colección como llaves y la cuenta correspondiente como valores: > coleccion = [’verde’, ‘rojo’, ‘azul’, ‘verde’, ‘violeta’, ‘amarillo’, ‘verde’, ‘rojo’, ‘verde’] => ["verde", "rojo", "azul", "verde", "violeta", "amarillo", "verde", "rojo", "verde"] > coleccion.tally => {"verde"=>4, "rojo"=>2, "azul"=>1, "violeta"=>1, "amarillo"=>1}> coleccion = [‘verde’, ‘rojo’, ‘azul’, ‘verde’, ‘violeta’, ‘amarillo’, ‘verde’, ‘rojo’, ‘verde’] => ["verde", "rojo", "azul", "verde", "violeta", "amarillo", "verde", "rojo", "verde"] > coleccion.tally => {"verde"=>4, […]

Elastic Enterprise Search – cliente oficial en Ruby

7 de diciembre de 2020
Elastic Enterprise Search Ruby

Uno de los proyectos súper interesantes en los que estuve trabajando durante mi primer año en Elastic es el cliente oficial para Elastic Enterprise Search. Fue mi primer proyecto de cero, y una experiencia excelente. Trabajé en conjunto con el equipo de Enterprise Search, aprendí un montón de esos servicios y la recepción fue súper positiva. Gracias a esto también empecé a dar mis primeras charlas en inglés. Participé de una charla en ElasticON Global junto a dos compañeros de equipo. Hablamos sobre el trabajo que hemos venido haciendo en el equipo, y en mi parte hablé de Enterprise Search […]

Mini pique – Ruby 3: Hash#except

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}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. Error happened.

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

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

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 Elastic, 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 Firefox […]

Se acerca RuboCop 1.0

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

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 la naturaleza del trabajo en el cliente Ruby para Elasticsearch. 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 […]

Nuevas versiones de Ruby y fin de soporte para Ruby 2.4

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

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

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!

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

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

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

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

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

Toasty!