Cambiar refresco de pantalla en Debian.

Con el paso de los años mi visión se ha debilitado. Por eso decidí desempolvar mi viejo monitor Samsung LCD 740n que tiene una estupenda tasa de refrescamiento vertical de 75 Hertz, es decir, “dibuja” el monitor 75 veces por segundo lo cual hace más placentero ver un monitor durante horas y horas todos los días. Yo sabía que por defecto viene fijado en 60 Hertz aunque no sabía el por qué, investigando un poco encontré este artículo donde dan una explicación histórica, dos grandes verdades que en mi mente no las había unificado hasta ahora. Las razones del por qué cansa menos la vista mientras mayor sea la tasa de refrescamiento por segundo siempre lo he tenido presente pero en este otro artículo está pero que muy bien explicado.

Finalizado el preámbulo vamos al grano, cambiar el refresco de pantalla (y resolución) en Debian (e incluso otras distribuciones Linux pero aún no lo he probado ya que las máquinas virtuales con las que practico pues… ¡usan el mismo monitor todas!). Esto quiere decir que este tema es con HARDWARE REAL pero primero he de hacerles una advertencia, no vayan a decir que no se los advertí:

Establecer una tasa de refrescamiento a un monitor para la que NO ESTÁ DISEÑADO, PUEDE DAÑAR SU MONITOR.

De hecho lo dañará si aún tiene un monitor de rayos catódicos (CRT, del inglés Cathode Ray Tube), en el caso de los monitores LCD y LED pues simplemente se niegan a trabajar y como no confirmamos al sistema operativo el ajuste, pasado cierto tiempo lo devolverá a su estado anterior. Si dudan de mi palabra lean la advertencia de Microsoft y otros foros importantes sobre tarjetas de video.

Actualmente esto no es problema para los monitores “en tercera dimensión 3D” ya que refrescan mínimo a 120 Hertz (60 para cada ojo) y así se produce la ilusión de profundidad, con dos imágenes tomadas desde dos puntos separados por cierta distancia, tal como vería nuestros ojos humanos (suena sencillo ¿verdad?).

www.ks7000.net.ve expresado en QR.

Generando códigos QR con Python.

Introducción.

En el día de hoy aprendimos que se pueden generar “QR codes” (la cual es la abrevitura, en inglés, de “Quick Response Code“) con un paquete para el lenguaje Python. Fueron creados en Japón para el manejo de piezas y manufactura de vehículos de la marca Toyota, a fin de agilizar grandemente los inventarios. Explicar cómo funcionan merece su entrada completa y aparte, aquí vamos a explicar brevemente cómo instalarlo y usarlo con Python.

Agradecimiento.

Agradecemos de antemano a los programadores de software libre de “Industrias Diana” cuya exposición fue brillante en el “Décimo Primer Congreso de Software Libre”. Dicha exposición abarcó varios temas acerca del proceso y manejo de la información, entre otros la cmunicación con impresoras fiscales y la generación de códigos QR, caso que nos ocupa hoy. Muchas gracias por compartir el conocimiento, cumplimos con seguir difundiendolo.

Instalación del módulo QR en Python.

Lo primero que debemos hacer es abrir una ventana terminal (¿no sabe cómo? visite nuestro pequeño tutorial sobre shell) y verificar si tenemos Python instalado en nuestro ordenador:

python -V

Podrán visualizar algo como esto:

Python comando para verificar versión instalada
Python comando para verificar versión instalada

Y a continuación escribimos la orden para instalar el módulo necesario para los códigos QR:

sudo apt-get install python-qrcode

La mayoría de las distribuciones GNU/Linux traen Python instalado por defecto, acá usamos Ubuntu en este ejemplo:

 qr-code python

Una vez instalado lo probamos, tal cual dice el ejemplo publicado en “Python Software Fundation” qrcode 5.1, es decir, crear una etiqueta QR con una información en un archivo de imagen en formato .png:

qr "Some test" > test.png

¡Y listo! (más tardamos explicando la introducción al tema que lo que se tardó instalando).

Uso de la librería QR.

Claro está, estos códigos les debemos dar usos útiles, en nuestro caso la imagen que encabeza esta entrada es la dirección URL de nuestro blog http://www.ks7000.net.ve

www.ks7000.net.ve expresado en QR.
www.ks7000.net.ve expresado en QR.

En realidad el comando qr es un guión “script” ubicado en

1
/usr/bin/qr

que nos facilita la realización de códigos QR de una manera rápida y sencilla. Si queremos avanzar un poco más podemos usar el siguiente código en lenguaje Python, el cual explicaremos luego línea por línea:

import qr
imagen = qrcode.make('http://www.ks7000.net.ve')
imagen.save('ks7000_url_qr.png', 'png')
  • La primera línea carga en memoria la librería necesaria y capaz de generar los códigos QR.
  • La segunda línea llama al método “hacer” de la librería qr para “dibujar” la línea que está como argumento (entre paréntesis y entrecomillado).
  • La tercera línea guarda en la carpeta desde donde se llamó a la aplicación y el primer argumento es el nombre del archivo y el segundo argumento el tipo de imagen.

Dichos códigos QR tienen una característica particular: utiliza un algoritmo de correción de errores basado en código Reed-Solomon de hasta un 30% (Y NO DE 50% COMO  PENSABAMOS -¿de dónde sacamos eso?) y lo podemos especificar de la siguiente manera:

import qrcode
qr = qrcode.QRCode(
  error_correction=qrcode.constants.ERROR_CORRECT_H,
  version=1,
  box_size=10,
  border=4,
)
qr.add_data('http://www.ks7000.net.ve')
qr.make(fit=True) imagen = qr.make_image()
imagen.save('ks7000_url_qr.png', 'png')
  • ERROR_CORRECT_H corresponde a un 30% de error de lectura (le coloca información redundante previendo el daño de la etiqueta donde va a ir el código QR). Es el error máximo soportado, los otros valores son -por letra-: “Q”, 25%; “M”, 15%; “L”, 7%. Todo depende en dónde vamos a colocar el código QR generado, recordemos que se inventaron para manejo de inventario de productos que debido a la manipulación y traslado puede dañar las etiquetas autoadhesivas que hagamos
  • version: un valor que va de 1 a 40 y controla el tamaño de la matriz de cuadrados. Aquí le colocamos 1, valor mínimo, pero como más adelante especificamos un valor en box_size deberemos usar el comando fit para que el software nos ajuste a la matriz de tamaño correcta.
  • box_size: el tamaño en píxeles que tendrá la caja.
  • border: el número de cuadros que tendrá el borde, cosa importante ya que son cuatro lados en blanco que permite ubicar la lectura. La cantidad mínima de cuadros es 4.

También observamos que el comando qr.make() lleva un solo argumento que indica que la imagen se ajuste automáticamente a los valores establecidos (ver anterior explicación de parámetros) y el comando qr.make_image() que lleva a cabo la conversión en sí de la imagen. Todos estos parámetros nos permiten generar códigos según necesitemos: tamaño, seguridad de lectura, etc.

Elementos de un “QR Code”:

Esta figura, en formato de “Scalable Format Graphic” (SVG) tomada de la Wikipedia bajo licencia “Creative Commons” (modificamos el archivo y le hicimos traducción al idioma castellano) nos muestra dónde están ubicados, por ejemplo los niveles de correción para errores de lectura en el cuadro guía superior izquierdo (esos tres cuadrados grandes a su vez con cuadrados insertados se utilizan para ubicar y rotar la imagen en memoria antes de proceder a descodificarlas, permite la lectura en cualquier dirección y es muy útil para productos grandes y pesados, tomáis la foto como se encuentre e igual se lee):

Información de formato "QR code"

 

Fuentes consultadas:

En idioma inglés:

En idioma castellano:


<Eso es todo, por ahora>.

Congreso Nacional de Software Libre, viernes 12 de junio de 2015.

Libertad no es poder escoger quién será tu amo, ¡LIBERTAD ES NO TENER AMO!

Richard Matthew Stallman.

Evento realizado en el INCES Av. Lara de Valencia, estado Carabobo, y organizado por:

Puede revisar el cronograma de actividades en este enlace.

Apertura del evento.

 

 

Ponencia: “Conciencia irreverente para un pais consciente”.

 

Ponencia: “Robótica divertida”.

CNSL2015-01 CNSL2015-02 CNSL2015-03 CNSL2015-04 CNSL2015-05 CNSL2015-06

Ponencia: “Licencia Venezolana de Software Libre”.

CNSL2015-07 CNSL2015-08

Ponencia: “Academia de Software Libre Carabobo”.

<Eso es todo, por ahora>.