Go: error con JSON y arreglo vacío

En este artículo expongo un pequeño error que sucede con Go (supongo que no es un bug sino que simplemente así se comporta el lenguaje) al declarar un arreglo vacío.

Lo que sucede es que cuando se declara un arreglo de structs y el mismo está vacío, al ser codificado como JSON el arreglo es null en lugar de [].

En otras palabras: go codifica (con JSON)  un arreglo vacío como null en lugar de como un arreglo vacío [].

(más…)

Consulta manual con GORM

Otro post que escribo sobre GORM, un ORM de Go. En este caso vamos a ver cómo hacer una consulta manual y un escaneo manual, es decir, algo tipo raw.

Este tipo de consultas son poco comunes pero existen para cuando necesitamos hacer un reporte o traer ciertos datos que no corresponden a un único modelo.

(más…)

Calificación de tareas

App web de Go, Vue y PostgreSQL en Android con Termux

Este artículo es una demostración sobre cómo poder montar una aplicación web que usa VueJS del lado del cliente (con la vue cli), Go/Golang del lado del servidor y PostgreSQL como base de datos.

Vamos a montar el proyecto web en un teléfono móvil con Android, usando la app Termux. Todo estará ejecutándose en Android, ya que se usará para programar.

Es decir, tendremos a node vigilando los archivos js, a go compilando en el lado del servidor y a PostgreSQL almacenando los datos.

¡Vamos allá!

(más…)

Control escolar - Bienvenida al sistema

Control escolar – Software web para gestión de escuelas

En este post te voy a mostrar un sistema de control escolar o gestión de escuelas. Es un software web que hice hace algún tiempo y vengo a mostrar hoy. Lo que tiene a grandes rasgos es:

  • Control de estudiantes o alumnos
  • Registro de profesores o docentes
  • Registro de materias
  • Control de calificaciones
  • Calificaciones por período y número de evaluación
  • Asignación de materias a docentes
  • Generación de boletas
  • Control de horarios de materias
  • Impresión de boleta
  • Impresión de horario de clases
  • Gráficas de comparación entre períodos

Como lo dije, el sistema es un sistema web que puede trabajar en internet o de manera offline. Es compatible con Linux y Windows. También es totalmente responsivo, es decir, se adapta a cualquier pantalla.

(más…)

Ocultar consola de ejecutable de Go

Hoy veremos cómo hacer que no aparezca una consola o interfaz al ejecutar un archivo del lenguaje Go.

En las aplicaciones de Go o Golang, se crea una consola indicando el estado; ya sea para interactuar con el usuario o para mostrar cierta información; incluso para ejecutar servidores web.

Sin embargo en ciertas ocasiones vamos a necesitar ocultar la consola y justamente hoy vengo a explicar eso. Por cierto, este truco funciona en Windows, no lo he probado en otros sistemas operativos.

(más…)

Eliminar archivo en Go

Golang: Eliminar archivo o directorio con todo su contenido

El lenguaje de programación Go (también conocido como GoLang) ofrece una manera sencilla de eliminar un archivo o eliminar una carpeta/directorio con todo su contenido a través de os.

Eliminar archivo en Go

Eliminar archivo en Go

En este post veremos cómo eliminar un archivo y también cómo eliminar un directorio con todo su  contenido: son dos operaciones distintas pero que de alguna forma se relacionan.

(más…)

Test de go pasado exitosamente

Testing en Go: asegurarnos de que nuestro código se ejecute como debería

Los tests automatizados o pruebas son una parte fundamental de todo lenguaje de programación y framework.

Hoy vamos a ver cómo escribir tests para probar nuestro código en Go. Será un ejemplo bastante sencillo pero ilustrará perfectamente cómo realizar pruebas a nuestro código.

Lo que veremos será:

  1. Usar el paquete testing
  2. Cómo escribir un test en Go
  3. Probar nuestras funciones con go test

Recuerda que antes de esto debes instalar y configurar Go. Si estás en Windows mira este post, y si estás en Linux Ubuntu mira este otro.

(más…)

Enrutador y Middleware en Go con Gorilla Mux

En un post anterior vimos cómo responder peticiones HTTP con rutas en Go, pero las mismas no eran tan simples cuando se trataba de variables en la URL o métodos HTTP.

Hoy vamos a ver un enrutador o router de Go, que permite definir rutas y métodos HTTP para responder a ellos, de una manera fácil.

El enrutador, llamado Mux (que es de las herramientas de Gorilla) permite:

  • Definir middleware en las rutas, es decir, aplicar funciones que se ejecutan antes de cada petición HTTP y que permiten detener la ejecución o loguear determinadas cosas
  • Definición de rutas con verbos HTTP
  • Lectura de parámetros GET
  • Lectura de variables dentro de la url. Por ejemplo si definimos algo como usuario/{id} y se consulta a usuario/1 podemos obtener el valor 1 accediendo a la variable
  • Variables dentro de la URL con expresiones regulares

En resumen, Mux es un router de Go que soporta además Middleware. Veamos algunos ejemplos del mismo.

Si quieres ver el código final míralo en GitHub.

Nota: si usas PHP te recomendo Phroute.

(más…)