patrones


Mar. 14, 2021

Mediator en Rust (I)

UPDATE 2021-03-15T22:46:50+02:00. Un lector (pues si, tengo lectores) me comentó sobre un error en Mediator::send. Cosas que pasan cuando transcribes y experimentas desde el playground. Un Rustacean en tierras de Dotnet. Un amigo me hace una pregunta mientras conversábamos sobre las ventajas de MediatR. ¿Qué te haces en Rust si quieres un mediator? Y de ahí salió la excusa para este artículo. MediatR para Rustaceans. MediatR es (en sus propias palabras) una implementación sencilla del patrón mediator para .
Feb. 22, 2021

Pipelines en Rust (II)

En el artículo anterior hablamos sobre la creación de pipelines extremadamente sencillas en Rust. Si recuerdan, la implementación se ejecutaba de forma secuencial lo que en el momento pudo parecer suficiente, pero si lo pensamos mejor nos damos cuenta que limita mucho la aplicabilidad del modelo. Una mejor idea sería poder usar nuestros pipelines de forma concurrente. Async Step La primera tarea es convertir nuestra implementación de Step a algo que sea usable de forma asíncrona.
Feb. 17, 2021

Desarrollo en Golang: Futures/Promises

Entre las cosas que pienso adicionar al workshop de Go está un capítulo sobre patrones y técnicas para programación concurrente. Future es un objeto que representa el resultado de un cálculo que se ejecuta de forma concurrente. Las futures se utilizan cuando tenemos un valor que es costoso de obtener pero sabemos de antemano como calcularlo. Las facilidades de Go para manejar concurrencia hacen la implementación de futures en el lenguaje bastante sencilla.
Dec. 24, 2020

Pipelines en Rust (I)

Pipeline es un patrón de diseño muy útil cuando tienes datos que deben ser procesados en una secuencia de etapas donde cada etapa toma como entrada la salida de la anterior. En cierta manera un pipeline es similar a componer funciones pero el nivel de complejidad es mucho más elevado debido a factores como backpressure, deadlocks o cancelación. Go es un lenguaje especialmente capacitado para programar pipelines debido a sus características especiales para el manejo de errores y concurrencia.