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:

A esta más limpia:

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.

(más…)

Imprimiendo en impresora térmica desde cualquier lenguaje de programación - Ejemplo de JSON

Crear conector para plugin de impresora térmica

En este post voy a explicarte cómo puedes crear un conector para el plugin de impresoras térmicas y así poder imprimir desde cualquier lenguaje de programación que hable HTTP.

Como bien sabes, mi plugin no es más que un servidor web que te permite imprimir en impresoras POS, solo debes indicarle las operaciones que debe hacer.

Veamos entonces cómo imprimir en una impresora térmica usando cualquier lenguaje de programación y mi plugin gratuito.

(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…)

Conectarse a Ubuntu por SSH usando usuario y contraseña

Lo recomendado para usar SSH y administrar un servidor remoto es la clave pública y privada; de este modo podemos conectarnos remotamente sin colocar la contraseña.

Ya he dedicado un post completo a la creación de un par de claves para usar al conectarse por SSH, pero en el artículo de hoy te enseñaré a conectarte por SSH a un servidor de Linux Ubuntu usando un usuario y contraseña.

Con lo que verás aquí podrás solucionar el error que dice: Permission denied (publickey).

Toma en cuenta que esto es inseguro ya que un atacante puede hacer ataques de fuerza bruta o cosas de esas, pero en ocasiones es necesario al menos de manera temporal.

Nota: este truco se puede usar para conectarse a un servidor de Ubuntu de DigitalOcean sin usar la consola desde el navegador.

(más…)

Go – Servir carpeta por HTTP

En este post te mostraré cómo servir un directorio por medio de HTTP usando Go. Básicamente verás cómo servir contenido estático para que puedas acceder a él desde el navegador.

De este modo podrás servir contenido en general, una aplicación web o el frontend de la misma, ya que puedes servir CSS, JS y HTML.

(más…)

Repositorio para publicar página web en GitHub

Alojar página web en GitHub

En este tutorial te enseñaré cómo alojar tu sitio web o aplicación web en GitHub totalmente gratis. Si bien GitHub no está pensado como un servicio de hosting, podemos ejecutar nuestras aplicaciones dentro del servicio.

Te enseñaré cómo usar GitHub para servir tu proyecto web. Por ahora solo te mostraré cómo usarlo para servir JavaScript, HTML y CSS (pues no podemos procesar nada del lado del servidor).

Así que, que quede claro: solo va a funcionar para las cosas del lado del cliente y no del lado del servidor sin importar el lenguaje de programación.

Pero no te preocupes, para un portafolio o aplicación web funcionará de maravilla, siempre y cuando no utilice backend.

(más…)

Trabajando con cámara en Python - Tomar fotos y grabar vídeos usando Flask y OpenCV

Grabar vídeo de cámara con Python, Flask y OpenCV – Cámara de vigilancia

En este post te mostraré otro avance en cuanto a la lectura de una cámara web usando Python. Con el código que expongo aquí serás capaz de:

Trabajando con cámara en Python - Tomar fotos y grabar vídeos usando Flask y OpenCV

Trabajando con cámara en Python – Tomar fotos y grabar vídeos usando Flask y OpenCV

  1. Ver la cámara en tiempo real, con fecha y hora
  2. Descargar una foto
  3. Guardar la foto en el servidor
  4. Grabar vídeos y guardarlos en el servidor

Básicamente se podrá hacer todo lo que se haría en una cámara de vigilancia, pero ahora usando Python y una cámara conectada al dispositivo. Obviamente se le pueden agregar más cosas, mejorar el proyecto, etcétera.

El punto es que con esto podemos usar Python para acceder a la cámara web, verla, tomar fotos y grabar vídeos.

(más…)

Foto tomada con Python y Flask

Python: acceder a cámara web con OpenCV y Flask

Hace tiempo te mostré cómo tomar una foto con la webcam usando Python, pero desde la terminal y sin una previsualización. Ahora te mostraré cómo stremear la cámara web en tiempo real a tu navegador web, tomar una foto y descargarla, o tomar una foto y guardarla en el servidor.

Acceder a la cámara web con Flask, OpenCV y Python

Acceder a la cámara web con Flask, OpenCV y Python

Para ver la cámara en tiempo real y exponerla para que un navegador web la consuma vamos a usar Flask. Y para acceder a la cámara usaremos OpenCV.

Al final tendrás la opción de descargar la foto o guardarla en el servidor. De este modo igualmente podrías ver una cámara web a través de la red, pues se va a crear un servidor web en donde la misma estará expuesta.

(más…)

Descargando archivo pesado servido por PHP

PHP – Servir archivo grande para su descarga

En este post te mostraré la manera óptima que utiliza poca memoria para servir un archivo con PHP y que el usuario lo descargue, sin importar el peso del archivo.

Podemos usar readfile para forzar la descarga de un archivo con PHP, pero si el archivo es muy grande y la memoria no es suficiente, habrá problemas como:

PHP Fatal error: Allowed memory size of 2097152 bytes exhausted (tried to allocate 2998272 bytes)

Por ello es que en este post te enseñaré cómo servir un archivo grande con PHP para su descarga, utilizando poca memoria y leyendo el archivo en fragmentos, con una alternativa a readfile.

(más…)