Llegamos al último cuatrimestre del año pero nuestras aventuras no se detienen, la última el pasado finde, en Barcelona. Nada más y nada menos que en la Software Crafters BCN, un evento que representa mucho en el mundo del desarrollo local. Mucho más allá de un conjunto de ponentes impartiendo charlas a una audiencia ansiosa de conocimiento, es más bien una cultura, una forma de vida que se propaga año tras año, de edición a edición.
... ➦
Hace ya un tiempo, nuestro querido amigo Joan López de la Franca, escribía un artículo en el que hablaba del patrón Context para concurrencia, el cual vimos que es realmente útil, pero es que el contexto en Go tiene otros usos, y hoy vamos a explicar un patrón muy extendido.
Seguramente a medida que habéis ido profundizando en Go y utilizado distintos de librerías o visto proyectos de ejemplo, habréis visto una proliferación de funciones/métodos con una firma similar a la siguiente, func foo(ctx contex.
... ➦
Un linter es una herramienta de programación cuyo nombre original -lint- era el nombre de una herramienta de programación utilizada para detectar código sospechoso, confuso o incompatible entre distintas arquitecturas en programas escritos en C, es decir, errores de programación que escapan al habitual análisis sintáctico que hace el compilador.
Actualmente, el término linter es usado para hacer referencia a herramientas que realizan estas tareas de análisis estático del código fuente, indistintamente del lenguaje de programación.
... ➦
Hoy no vengo a ponerme filosófico, todos conocemos la famosa obra de Franz Kafka, La metamorfosis, aunque seguro que no tantos la hemos leído. Pero no, esto es un blog sobre Go y por ello venimos a hablar de como utilizar Apache Kafka en Go.
Llevaba tiempo queriendo adentrarme en probar este software, y por distintas razones no había tenido la oportunidad, así que decidí en mis vacaciones crear un pequeño chatroom para poder probar como funcionaba con Go y divertirme en el proceso, además poder compartir con vosotros todo lo aprendido.
... ➦
Un middleware es una pieza de software que asiste a una aplicación para interactuar o comunicarse con otras aplicaciones, paquetes de programas, redes, hardware o sistemas operativos. Funciona como una capa de abstracción de software distribuida, que se sitúa entre las capas de aplicaciones y las capas inferiores abstrayendo de la complejidad y heterogeneidad de las redes de comunicaciones subyacentes, proporcionando una API para la fácil programación y manejo de aplicaciones distribuidas.
... ➦
Quizás este no es un artículo propiamente de Go pero si que utilizaremos una herramienta escrita en Go y además creada por nosotros, que nada tiene que envidiar a otras soluciones de mock server del mercado.
¿Qué es un mock server? Seguramente mientras estamos desarrollando nos hemos encontrado con la necesidad de conectar con una API de terceros o algún microservicio propio para poder hacer alguna funcionalidad, poned por ejemplo que tenemos que conectarnos con la API que ya desarrollamos en un artículo anterior, GopherAPI.
... ➦
Los titulares que auguran que el “Brexit duro” es ya inevitable son muchos, de hecho, parece que la fecha límite es el 31 de octubre, para lo que quedan poco más de dos meses. Sin embargo, nada de eso nos impidió disfrutar de una edición más de la GopherCon UK, de nuevo con una nota sobresaliente.
The Brewery, la ubicación dónde se ha realizado el evento los últimos años estaba a rebosar ya el primer día, el pasado 21 de agosto.
... ➦
El calor (o el frío, según el hemisferio en el que viváis) sigue, y con ello los patrones de concurrencia. Ya hemos publicado unos cuantos artículos sobre algunos de ellos, pero aún nos quedan más por publicar. Y a ello vamos. Esta vez es el turno del patrón de concurrencia work.
Contextualización de la problemática Si hacéis un poco de memoria, y si no podéis echarle un vistazo al último artículo, recordaréis que el patrón pooling hace uso de un buffered channel como método para almacenar varios recursos compartidos.
... ➦
Hace tres semanas, y después de meses recibiendo feedback reclamando más artículos sobre la concurrencia en Go, decidimos empezar una nueva serie de artículos sobre patrones de concurrencia que ha dado mucho de que hablar.
Dicha serie empezó con uno de los patrones más comunes entre las aplicaciones concurrentes en Go: el patrón context. Después seguimos repasando otro patrón, también muy habitual a la hora de manejar grades volúmenes de datos de diferentes fuentes: el patrón pipeline.
... ➦
Hoy os traemos un artículo algo diferente, y es que esta vez se trata de una traducción de otro artículo. El artículo al cual haremos referencia es: https://cronokirby.github.io/posts/data-races-vs-race-conditions, y hemos tomado esta opción porque el artículo original está genial como está, pero queremos que sea accesible nuestra comunidad hispana por lo interesante que es.
En este post se hablará sobre la diferencia entre Data Races y Race Conditions, y como las estructuras de datos o patrones de datos que a priori están libres Data Races pueden acabar en Race conditions.
... ➦