Firma digital con Golang y RSA

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.

(más…)

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.

(más…)

Código fuente de plugin para impresoras térmicas v2

En este post te mostraré cómo instalar y compilar lo necesario para montar el código fuente del plugin de impresoras térmicas versión 2 que ya presenté anteriormente y que puedes ver en el siguiente post:

Presentando plugin para impresoras térmicas versión 2

En pocas palabras, ese plugin permite imprimir en impresoras térmicas usando una API de internet, pero al estar en un servidor web necesita una conexión estable a internet, por ello es que ya existe la versión 3.

Al tener el código fuente, tú mismo puedes vender el servicio de la API ESC POS o usarlo para ti mismo modificando los planes y brindándote un plan ilimitado.

Veamos entonces cómo instalar las herramientas necesarias para modificar el código fuente del plugin versión 2.

(más…)

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:

Plugin para imprimir en impresora térmica usando navegador web y JavaScript

La página del producto es: https://parzibyte.me/plugin-impresora-termica-v1/

Estoy liberando el código fuente porque ya existe la versión 3 del plugin, que por cierto te invito a probar.

Por cierto, el plugin versión 1 sigue funcionando y puedes usarlo gratis o en su versión premium.

(más…)

Enviar archivo de JavaScript a Golang

Subir archivo de JavaScript a Go (Golang)

En este post de programación cliente-servidor vamos a ver cómo enviar un archivo desde JavaScript del lado del cliente a Golang (Go) del lado del servidor.

Específicamente hablando veremos cómo enviar un archivo usando fetch y FormData a través de AJAX hacia un servidor de Go.

Lo que te enseñaré servirá para enviar fotos, archivos binarios o incluso una foto tomada con la cámara web con las debidos ajustes.

Va a ser un ejemplo realmente simple pero que luego podrás modificar para, por ejemplo, usarlo en React, Angular, JavaScript puro o Vue.

(más…)

Subiendo Sublime POS 3 a servidor Ubuntu

Ya escribí un artículo indicando cómo usar Sublime POS 3 en internet de manera resumida, pero en este post te enseñaré una pequeña guía específica de cómo subirlo a un servidor con Linux Ubuntu alojado en DigitalOcean.

Te recomiendo leer primero el post que cité anteriormente y después volver a este. También te sugiero que veas cómo compilar el código fuente para que entiendas los conceptos aquí mostrados.

(más…)

Usar dispositivo Android como servidor de sistema de ventas

Compilar Sublime POS 3 en Android

En este post te mostraré cómo puedes usar Sublime POS 3 (punto de venta) en Android compilando por ti mismo el código fuente.

Al final vas a poder usar el sistema nativamente y en modo local en una tableta o teléfono, además de que podrás usarlo como servidor y permitir que otros dispositivos se conecten al mismo.

Por lo tanto, si cuentas con el source code de este sistema de ventas podrás usarlo nativamente en Android sin depender de un servidor, y podrás usarlo en teléfonos o tabletas.

(más…)

Agregar columna a tabla si no existe en SQLite3 con Golang

En el tutorial de hoy te mostraré una pequeña función que te permite agregar una columna a una tabla solo si la misma no existe.

El motor de base de datos que vamos a usar será SQLite3 pero me imagino que debe funcionar para otros como PostgreSQL o MySQL.

Esto es necesario porque en ocasiones el cliente no puede hacer los cambios a la base de datos (no puede ejecutar sentencias SQL) y además se desean conservar los datos ya existentes.

Por ello es que hoy veremos cómo agregar una columna a una tabla conservando sus datos, y agregarla solo si no existe, verificando la tabla con PRAGMA en SQLite3.

(más…)

Go: convertir interface a otro tipo de dato

En el tutorial de hoy vamos a ver cómo convertir de un valor de tipo interface a cualquier otro tipo en Go también conocido como Golang.

Un interface es un valor “genérico” (aunque los genéricos son otra cosa en Go y se han introducido recientemente), y como Golang es fuertemente tipado debemos hacer la conversión explícita.

Por eso es que hoy veremos cómo convertir una interface a string, int, int64, etcétera.

(más…)

Solución a Error en el servidor: sql: no rows in result set en plugin de impresora térmica

En este post te mostraré cómo arreglar el error de mi plugin de impresión que dice: Error en el servidor: sql: no rows in result set.

Este error dice que no hay filas en la base de datos, y tal vez te estarás preguntando qué tiene que ver la impresión con una base de datos, por lo que justamente eso será lo que trataré en este post.

(más…)