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

Imprimir en impresora térmica con C# y Visual Studio

En este artículo vamos a ver cómo comunicar C# con una impresora térmica usando Visual Studio, Mono o cualquier compilador que soporte C#. Es decir, no necesitas VS obligatoriamente siempre y cuando cuentes con el .NET framework necesario. Podrás usar C# (C sharp) para imprimir texto en una POS printer, alinear, colocar enfatizado, definir tus propios caracteres por si la impresora no lo soporta, imprimir acentos, texto según páginas de códigos y por supuesto podrás imprimir imágenes (locales, de internet o en base64), códigos QR, códigos de barras y todo lo necesario para crear tickets con C# en una thermal printer. Para esto vamos a usar un conector que he creado con C# y un plugin gratuito. Esto funciona en Linux, Raspberry Pi, Windows y cualquier plataforma donde funcione mi plugin y C# se pueda compilar. ...

marzo 29, 2023 · 6 min · 1210 palabras · Parzibyte

Failed to load image al usar escpos-php de Mike42

En este post voy a relatar un error que aparece al comunicarse con impresoras térmicas desde PHP usando la librería ESC POS de Mike42. En este caso el error es Failed to load image que ocurre cuando queremos imprimir una imagen en una impresora térmica. Recuerda que este error aparece si la imagen no es válida, no existe, no tienes la extensión gd y/o imagick, etcétera. Pero si crees que cuentas con todo eso y te sigue dando problemas entonces sigue leyendo. Te lo repito: antes de revisar la solución listada más adelante, por favor comprueba que la imagen que quieres imprimir existe y que tienes habilitadas las extensiones necesarias. ...

marzo 21, 2023 · 2 min · 425 palabras · Parzibyte

Rotar imagen en navegador web con JavaScript y canvas

En este artículo te voy a enseñar a rotar una imagen con HTML y JavaScript a través de canvas, de manera que podrás girar una imagen los grados que tú quieras, es decir, rotarla 90, 180, 270 o cualquier cantidad. Veremos cómo cargar una imagen, pintarla en un canvas, agregarle rotación y después hacer cosas como descargar esa imagen o enviarla al backend que puede ser con Node, C#, PHP, etcétera. ...

marzo 6, 2023 · 5 min · 957 palabras · Parzibyte

JavaScript: tabular datos con límite de longitud, separador y relleno

El día de hoy veremos un algoritmo que he querido desarrollar desde hace mucho y que no fue tan complejo como creí. Se trata de una forma de crear una tabla con JavaScript y que los datos se acomoden automáticamente en cada columna para que no superen una longitud predefinida. De este modo podremos crear tablas (en forma de texto) en donde el contenido se va a ajustar automáticamente, especificando un separador y una longitud por columna. ...

febrero 28, 2023 · 6 min · 1272 palabras · Parzibyte

Python - Conversor de divisas (ejercicio resuelto)

Hoy vamos a resolver un ejercicio en Python para convertir monedas o divisas. Es un ejercicio resuelto, así que no se consultan APIs ni nada de eso, solo se hacen operaciones matemáticas. ...

febrero 27, 2023 · 2 min · 425 palabras · Parzibyte

JavaScript: separar cadena en bloques

En el post de hoy vamos a ver cómo dividir una cadena en pedazos si es que supera una máxima longitud. Por ejemplo, separar la string en JS si mide más de 5, y además de eso dividirla en fragmentos de N cantidad. Vamos a ver cómo separar una cadena cada cierto número de caracteres y también cómo dividirla en trozos pequeños colocados en un arreglo donde se respete una cierta longitud. ...

febrero 20, 2023 · 3 min · 600 palabras · Parzibyte

Total vendido agrupado por mes - SQL y reportes con gráficas

En este post vamos a ver cómo calcular el total vendido en un período de fechas agrupado por mes, ya sea para mostrar un reporte o una gráfica de barras o líneas. Básicamente veremos el algoritmo y ejemplos de código para sacar el desglose del total vendido por mes en el año o en cualquier período de tiempo, tomando los datos de una base de datos, agrupando, ordenando, sumando, etcétera. No importa cuál motor de base de datos utilices ni el lenguaje de programación. Veremos el algoritmo para sumar el total vendido por mes. ...

febrero 14, 2023 · 6 min · 1088 palabras · Parzibyte

Abrir y cerrar etiqueta HTML cada N elementos

En este post vamos a ver un algoritmo para separar etiquetas HTML cada cierto número de elementos. Por ejemplo, colocar un div cada 4 elementos sin importar la cantidad total de los elementos. Esto sirve como ejercicio y para aplicaciones de la vida real. Recientemente tuve que separar un grupo de etiquetas div de 4 en 4 y encerrarlos en un div contenedor. Entonces veamos cómo separar elementos cada cierto número y encerrarlos en otro contenedor sin importar la cantidad de elementos ni cada cuánto debemos separarlos. Básicamente vamos a realizar agrupaciones y división de datos. ...

febrero 8, 2023 · 3 min · 516 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