Copiar bytes de Golang a JavaScript con WebAssembly

Gracias a WebAssembly podemos ejecutar código de otros lenguajes de programación desde el navegador web con JavaScript. La ventaja de WASM es que, aparte de ser rápido, permite programar en otro lenguaje y aprovechar las librerías presentes en el mismo. Personalmente he usado Golang con WebAssembly para crear un generador de credenciales, códigos QR y códigos de barras. Todo el procesamiento y generación de imágenes se hace con Go, para luego exportar los resultados a JavaScript. En este post voy a documentar **cómo exportar un arreglo de tipo byte ([]**byte) de Go a un Uint8Array de JavaScript, ya que, como te lo dije anteriormente, esto sirve cuando creamos un archivo binario con Go y queremos exportarlo a JavaScript. Además, un Uint8Array sí puede ser transportado a través de un WebWorker usando el structured clone algorithm. ...

enero 21, 2025 · 3 min · 633 palabras · Parzibyte

Respaldar archivo con Bot de Telegram

El día de hoy te enseñaré a respaldar un archivo o directorio y enviarlo a Telegram, de modo que puedas tener un respaldo o backup de información en la nube de Telegram de manera programada usando un Bot. Con el programa que vamos a ver serás capaz de: Enviar un archivo a cualquier usuario, grupo o canal de Telegram a nombre de un Bot En caso de que quieras hacer un respaldo de un directorio en Telegram, el directorio será comprimido en un zip Si el archivo pesa más que el límite, será dividido en varias partes y enviado a Telegram, así que no hay límite de tamaño Así que dicho con otras palabras vas a ser capaz de respaldar información en Telegram usando un Bot, sin importar el tamaño o contenido del directorio. Más adelante puedes combinar esto con algo como el Cron para Golang y hacer respaldos periódicos. ...

julio 31, 2024 · 8 min · 1631 palabras · Parzibyte

Algoritmo Floyd-Steinberg Dithering con Golang

En este post de programación con Go te voy a enseñar cómo aplicar el algoritmo Floyd-Steinberg Dithering a cualquier imagen, de modo que puedas convertir una imagen de color completo a una en blanco y negro respetando la iluminación. Para que tengas una idea de lo que hace este algoritmo, mira la siguiente comparación donde aparece la imagen a color, en blanco y negro sin dithering y finalmente en blanco y negro pero con dithering: Como puedes ver, al aplicarle el dithering aparecen más detalles en la imagen, dando la ilusión de iluminación. De hecho pareciera que está en escala de grises, pero no, en este caso el dithering solo convierte la imagen a blanco y negro, nada más. Veamos entonces cómo implementar este algoritmo Floyd-Steinberg Dithering con Golang a cualquier imagen ya sea PNG o JPG. ...

julio 28, 2024 · 9 min · 1737 palabras · Parzibyte

Imagen a PDF con Go

En este tutorial de programación con Golang vamos a ver cómo convertir varias imágenes en un PDF, indicando el tamaño del papel y ajustando la imagen para que tenga el tamaño de la hoja. Dicho con pocas palabras veremos cómo convertir imágenes a PDF con Go, agregando una imagen por hoja, cubriendo toda la hoja. ...

mayo 22, 2024 · 2 min · 339 palabras · Parzibyte

Agregar texto a imagen con Golang

En este tutorial de trabajo con imágenes en Golang vamos a ver cómo escribir texto sobre una imagen, cambiado la alineación, tamaño, espaciado de línea e incluso cargando una fuente TTF. Veamos entonces cómo dibujar texto sobre una imagen con Golang. El ejemplo que te mostraré crea una imagen en blanco y dibuja el texto en la misma, ajustando el texto como sea necesario. ...

enero 24, 2024 · 4 min · 651 palabras · Parzibyte

Sincronizar archivo con PHP

En este post de programación de servidores con PHP te voy a enseñar a mantener sincronizado un archivo, de modo que si el archivo es modificado se puede subir la nueva versión, y luego descargar esa última versión en cualquier otro dispositivo. Lo único que vamos a hacer con este script es mantener sincronizado un archivo con PHP cada vez que ejecutemos el programa cliente que sube o baja el archivo. No es el próximo rsync, solo permite, a petición del usuario, subir o descargar un archivo usando PHP en el servidor y Golang en el cliente a partir de su fecha de modificación. El programa es open source y con alguna modificación también va a permitir mantener un historial de versiones del archivo. Recuerda que ya hice un gestor de archivos en la nube con PHP hace algún tiempo, solo que ahora te enseñaré a subir y bajar un archivo de manera automática. ...

enero 24, 2024 · 6 min · 1242 palabras · Parzibyte

SQLite3 en JavaScript con WebAssembly y OPFS

Anteriormente te he hablado de SQLite en el navegador web, ya sea con Svelte o JavaScript puro. Hoy voy a mostrarte otra cosa: cómo invocar a SQLite3 desde WASM o WebAssembly. Al final vamos a estar invocando la API de SQLite3 de JS desde WebAssembly. Te enseñaré cómo es mi entorno de trabajo y cómo usar SQLite3 con WebAssembly. ...

septiembre 7, 2023 · 4 min · 748 palabras · Parzibyte

Código fuente - Software POS restaurante

En este post escribiré los detalles del código fuente para mi sistema gratuito para restaurantes. Te enseñaré a compilarlo y te enseñaré algunos de sus detalles para tenerlo en tu plataforma favorita. El programa está hecho con Vue, Buefy, Golang, SQLite3. Utiliza JWT para la autentificación, Gorilla para crear la API REST y NSIS para el instalador. Recuerda que, como está hecho con Go, C y Node, puede compilar en cualquier plataforma que soporte Go y C. Así que puedes compilar en Linux, Android, Mac, Windows, Raspberry Pi, servidores de internet y cualquier otra que soporte estos lenguajes. ...

abril 27, 2023 · 9 min · 1899 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