Usando ficheros estáticos en Go Hoy vamos a utilizar ficheros estáticos en Go y es que seguro que en más de un caso te has visto en la necesidad de utilizar dichos ficheros en tus aplicaciones Go, véase imágenes, ficheros HTML, JSON o de configuración. Algo que caracteriza a Go es que tan sólo necesitarás de un binario para distribuir tu aplicación, esto hace que sus binarios sean algo no sean excesivamente pequeños, pero los hacen realmente portables, pero si añadimos ficheros estáticos esto deja de ser una realidad, ya que tendremos que estar pendientes de sus posibles rutas y arrastrar nuestros estáticos con el binario, lo cual pierde un poco la gracia. ...
Introducción a gRPC en Go (NOTA: El código fuente de este artículo está basado en la aplicación de ejemplo de este repositorio. Si os perdéis en cualquier momento, podéis revisar la solución final ahí o preguntar cualquier duda a través de los canales habituales) Los que hace más tiempo que leéis nuestros artículos, seguro que estáis familiarizados con Gopher API, una API HTTP JSON que sigue una arquitectura REST, utilizando los verbos HTTP más habituales (GET, POST, DELETE, etc) para realizar operaciones CRUD sobre una colección (de gophers). ...
Usando errores en Go 1.13 Hace algún tiempo nuestro querido David L. Carrascal nos hablaba de la gestión de errores en Go y además nos daba unas pinceladas de lo que nos encontraríamos en la versión 1.13 de Go. Pues la versión 1.13 ya nos acompaña desde algunos meses y queremos entrar en más detalle en como utilizar las nuevas funcionalidades que se han añadido al paquete errors. El método Unwrap Go 1.13 introduce una nueva funcionalidad tanto en el paquete errors como en el paquete fmt que nos simplifica la manera que tenemos de trabajar con errores que contienen otros errores. ...
Continuous Profiling en Go Hoy en día es realmente muy habitual ver las siglas CI/CD en cualquier aspecto relacionado con el ámbito del desarrollo: ya sea una conferencia, una oferta de trabajo o un simple listado de prácticas deseables para una compañía de dicho ámbito. De hecho, las segundas de esas siglas (CD) suelen generar controversia: ¿entrega contínua o despliegue contínuo? ¿Son realmente lo mismo? ¿O son cosas diferentes? Bien, pues en este artículo no queremos centrarnos en ese debate / reflexión, sinó que lo que queremos es generar más controversia, añadiendo unas nuevas siglas al juego: CP (Continuous Profiling). ...
Instrumentación en Go con Zipkin Nuestro mundo esta lleno de palabrejos para definir aquello que hacemos, a veces parecemos médicos, pues el artículo de hoy va sobre observabilidad e instrumentación (observability and instrumenting) en nuestros microservicios. Seguro que muchos de vosotros estáis hartos de crear microservicios, ya sea para despedazar ese antiguo monolito, como por aislar ciertas funcionalidades concretas, etc. y seguramente os habréis encontrado con que muchas veces seguir el flujo de comunicación y que sucede en nuestros microservicios no es algo sencillo. ...
Software Crafters BCN 2019: la versión más mediterránea de la software craftsmanship 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. ...
Context en Go, todo lo que querías saber 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. ...
Linters en Go 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. ...
Empezando con Apache Kafka en Golang 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. ...
Middlewares en Go 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. ...