Detener servidor http de Go desde el mismo servidor

El día de hoy te enseñaré a detener un servidor web creado con Go desde el propio programa. Dicho de otra manera, el servidor se va a detener a sí mismo. Para estoy hay varios enfoques pero te enseñaré 2 que yo considero son muy fáciles y no involucran canales o rutinas (go routines). ...

abril 17, 2023 · 3 min · 451 palabras · Parzibyte

Golang: validar parámetros GET en URL con servidor HTTP

En este post vamos a ver cómo validar y obtener los parámetros GET pasados en la URL cuando estamos leyendo la petición de un servidor HTTP. Recuerda que con net/http podemos obtener el mapa de parámetros con http.Request.URL.Query, luego cuando accedemos a una clave nos devolverá un arreglo con todos los valores para esa clave GET y finalmente si solo queremos el primero accederemos a la posición 0 de ese arreglo. Yo te enseñaré cómo pasar de esta validación: variablesGet := r.URL.Query() fechaInicioComoArreglo := variablesGet["fechaInicio"] fechaFinComoArreglo := variablesGet["fechaFin"] if len(fechaInicioComoArreglo) <= 0 { return nil, errors.New("no hay fechaInicio") } if len(fechaFinComoArreglo) <= 0 { return nil, errors.New("no hay fechaFin") } A esta más limpia: valores, err := validarParametrosGetDePeticionHttp(r, []string{"fechaInicio", "fechaFin"}) if err != nil { return nil, err } fechaInicio, fechaFin := valores[0], valores[1] De este modo podremos validar que el parámetro GET se encuentre presente en la petición HTTP además de que no esté vacío, y no importará la cantidad, siempre tendremos las mismas líneas. Nota: seguramente habrá frameworks o librerías que ya hacen el trabajo. Yo lo haré usando solo la librería estándar y el paquete net/http de Golang. ...

febrero 2, 2023 · 3 min · 437 palabras · Parzibyte

Rotar PDF con Golang

En este post te enseñaré a rotar un PDF usando el lenguaje de programación Go. Vamos a ser capaces de rotar un documento indicando los grados, y todo esto de manera programada indicando la ubicación del archivo de entrada y el de salida. Para modificar el PDF con Golang usaremos el paquete pdfcpu que sirve para hacer distintas operaciones a los PDF pero en esta ocasión nos vamos a centrar en la rotación de las páginas. ...

enero 27, 2023 · 2 min · 392 palabras · Parzibyte

Firma digital con Go y RSA

El día de hoy vamos a ver cómo firmar y verificar un mensaje con Golang y un par de claves RSA. Es decir, por un lado veremos cómo firmar digitalmente un mensaje usando una clave privada y por otro lado vamos a ver cómo comprobar la autenticidad de dicho mensaje. Recordemos que las firmas digitales tienen el propósito de comprobar la autenticidad de un mensaje, no de ocultarlo (de eso se encarga la criptografía). Veamos entonces cómo firmar y verificar firmas con Go. ...

noviembre 25, 2022 · 7 min · 1312 palabras · Parzibyte

Cambiar fondo de pantalla de manera remota

El día de hoy veremos cómo cambiar la imagen de fondo de escritorio de manera remota para molestar al usuario. Dejaremos un programa ejecutándose en segundo plano, mismo que va a revisar cada X segundos si debe cambiar el fondo y en caso de que sí va a descargar la imagen del sitio que le indiquemos para colocarla como nuevo fondo. Mientras el usuario esté conectado a internet y el programa se esté ejecutando, no se podrá hacer nada para cambiar el fondo de pantalla al original, ya que nuestro programa va a cambiar la imagen de escritorio cada tiempo que nosotros indiquemos. Al final esto es para hacer bromas, no le veo otra utilidad. Eso sí, vas a aprender varias cosas, por ejemplo, cómo consultar un gist con HTTP, poner un cron en Go e invocar a un programa de C#. ...

noviembre 23, 2022 · 6 min · 1099 palabras · Parzibyte

Combinar y ordenar 2 tablas de base de datos

El día de hoy veremos cómo extraer datos de 2 tablas SQL distintas, combinarlos y extraer solo los primeros de ellos a partir de un parámetro de ordenamiento. El ejemplo que mostraré va a mostrar los productos más vendidos en una tienda, pero esos productos se venden al contado o en apartado, y cada uno está en una tabla distinta. Lo que se requiere es obtener los productos más vendidos sin importar a cuál tabla pertenecen, ordenándolos, combinándolos y extrayendo solo los primeros N. ...

noviembre 22, 2022 · 4 min · 811 palabras · Parzibyte

Golang: convertir base64 a imagen

En este post te mostraré cómo convertir una cadena en base64 a una imagen de Go. Específicamente convertiremos un string de la imagen en base64 a un objeto tipo image.Image. Una vez que tengamos la imagen como image.Image entonces podemos escribirla en el disco duro, manipularla o hacer cualquier otra cosa. ...

octubre 6, 2022 · 2 min · 323 palabras · Parzibyte

Código fuente de plugin para impresora térmica v1

En este post explicaré cómo obtener y descargar el código fuente de mi plugin para impresoras térmicas versión 1, que es el que está publicado en la siguiente página: [https://parzibyte.me/blog/posts/plugin-impresora-termica-navegador-javascript/](https://parzibyte.me/blog/posts/plugin-impresora-termica-navegador-javascript/) Estoy liberando el código fuente porque ya existe la versión 3 del plugin, que por cierto te invito a probar. ...

octubre 4, 2022 · 4 min · 745 palabras · Parzibyte

Golang: enviar 404 en respuesta HTTP

Estoy modificando mi sistema de ventas para que tenga fotos de productos, pero la foto es opcional, así que si el producto no tiene foto debo enviar un código de estado 404 con Go para que el cliente sepa que no se encontró lo que buscaba. Por eso es que en este corto post de programación con Golang vamos a ver cómo enviar un Status code 404 not found. ...

septiembre 15, 2022 · 1 min · 211 palabras · Parzibyte

Servir imagen en servidor web con Golang

Hoy vamos a ver cómo enviar una imagen al cliente desde Golang, es decir, servir una imagen en un servidor web programado con Go. Vamos a leer la imagen según su ruta y luego enviarla con los encabezados adecuados al cliente. ...

septiembre 15, 2022 · 2 min · 331 palabras · Parzibyte