Skip to main content

a silhouette of a person's head and shoulders, used as a default avatar

Cuando los planetas se juntan

Si eres un curioso observador de la naturaleza (y has de serlo si estás leyendo estas líneas), seguramente no habrá escapado a tu vista el precioso espectáculo que ha tenido lugar al atardecer durante estos días. Los planetas Venus y Marte en el ocaso, con la Luna cresciente jugando con ellos. Cuando la Luna se […]
a silhouette of a person's head and shoulders, used as a default avatar

El meteoro que no fue

Si vives en Centroamérica, probablemente habrás escuchado la noticia de que la noche del 27 de Diciembre del 2016, un brillante meteoro fue observado a lo largo del litoral Pacífico del istmo. Reportes desde Costa Rica, Nicaragua, El Salvador y Guatemala no se hicieron esperar en las redes sociales. Aquí en Nicaragua, los reportes se […]

the avatar of Alberto Garcia

Prevenir el borrado accidental de archivos en Linux

Una de las pesadillas recurrentes cuando manejas Linux desde un terminal o consola es equivocarte al teclear un comando como ROOT y en lugar de escribir rm ./* escribir rm *, lo primero borra todo en la carpeta, lo segundo borra todo en el ordenador. Sólo me ha pasado una vez, y recuerdo perfectamente ver como desaparecía la carpeta “/BOOT” y “/GRUB” delante de mis narices antes de darme cuenta de la tremenda metedura de pata (afortunadamente no llegó a la H de /HOME).
Como he visto varias veces volver a “pasar la piedra rozándome la cabeza” hace no mucho (más vale tarde que nunca) me decidí a aplicarme una medida para dedos torpes en dos etapas:
1º/ inhabilitar el comando rm
2º/ habilitar el uso de la papelera en consola.

Inhabilitar rm

Esto es tan sencillo como definir un alias llamado rm que diga algo asíalias rm='echo No use «rm», mejor use «del» o la ruta completa de rm «/bin/rm»
Añadiendo esa línea a nuestro de alias (en ~/.alias ó ~/.bashrc depende de tu Linux) cuando escribamos rm en consola nos aparecerá esa advertencia. Si persistimos en usar rm lo único que tenemos que hacer es usar su path completo /bin/rm.

Habilitar del

Habilitar el comando del (como abreviatura de delete, u otro que tu prefieras) es tan simple como crear un script en nuestro directorio BIN (~/bin) con nombre (p.ejemplo) deltrash.sh y con el contenido:#!/bin/sh
kioclient5 move "$@" trash:/

(Para KDE5, en otros KDE usa kioclient)
Ahora, de nuevo en alias creamos un atajo a nuestro script que diga algo comoalias del="rmtrash"
En adelante tras borrar uno o varios archivos veremos algo como

the avatar of Alberto Garcia

Digikam para identificar ginetas

Llevo ya bastantes años usando Digikam como gestor de álbumes de fotos. Hace ya muchas versión implantaron un módulo llamado “mesa de luz“, que recordando las mesas de luz de las diapositivas permite comparar cómodamente dos imágenes al mismo tiemnpo de forma sincronizada. Es muy útil para comparar dos imágenes casi idénticas y seleccionar la que tenga mejor nitidez, foco, exposición, etc…
La verdad, no lo he usado casi nunca, no le encontré mucha utilidad, hasta ayer, cuando descubrí que es una herramienta fabulosa para comparar dos fotogramas de las cámaras de trampeo y averiguar si por su patrón de manchas la gineta es la misma o no. A la izquierda el macho de gineta que ya viejo conocido (ver post anterior), a la derecha un “desconocida” fotografiada (por los pelos, solo los cuartos traseros) en una ubicación nueva (y bastante remota con respecto a las originales).

Conclusión, la gineta es la misma, y cada día me alucina más las caminatas que estos animales (paticortos) se pegan cruzándose La Muela de una punta a la otra con una regularidad y facilidad que me tiene asombrado.

the avatar of Alberto Garcia

Automatizar movimientos de ratón

Ya me pasó hace tiempo, que quería descargar varias decenas de archivos adjuntos a otros tantos emails y no sabía como sin pasarme la mañana moviendo el ratón por la pantalla. Entonces lo solucioné con IMAP, montando el correo electrónico de GMAIL como una carpeta local de mi ordenador pude obtener una copia en disco duro de los emails y sus adjuntos. Ahora se repite, misma situación, solución diferente.

Esta vez he optado por otra solución, requiere menos trabajo y es mucho más rápida que esperar a tener una copia local de GMAIL para extraer archivos, xdotool: un comando de consola que replica los movimientos de ratón y teclado, eventos de click, click-derecho, pulsación de teclas, etc… De esta manera es sumamente fácil simular que movemos el ratón al tal sitio, cliqueamos un botón, movemos a otro, pulsamos ENTERad infinitum

while [ true ]; do xdotool search "Correo" windowactivate --sync mousemove --window %1 290 460 sleep 0.5 click 1 sleep 3 key KP_Enter sleep 1 mousemove 1264 250 sleep 1 click 1 sleep 4; done

La siguiente línea de texto hace eso, sobre una página de GMAIL:
-busca la ventana llamada “Correo” y le da el foco activándola
– usandola como referencia mueve el ratón a sus coordenadas relativas 290×460 (botón descargar adjunto)
– espera 0.5 segundos y cliquea botón izquierdo del ratón (click 1)
– espera 3 segundos (mientras se abre diálogo guardar adjunto)
– pulsa ENTER
– espera 1 segundo (la descarga es rápida)
– mueve el ratón al botón “Siguiente mensaje”
– espera 1 segundo
– pulsa botón izquierdo del ratón
– espera 4 segundos a que cargue siguiente mensaje.
– repetir.

Ni os cuento las risas que nos hemos echado en algún trabajo a cuenta de automatizar el movimiento del ratón y dejar durante horas al 3DStudio modelando el solito escenarios… o dejando al ordenador durante largos periodos de tiempo enviando insultos por mensajería mientras nosotros nos íbamos de coartada a almorzar a la cafetería.

the avatar of Alberto Garcia

Minimal-clock, plasmoid para KDE4

Un pequeño plasmoid para KDE4 para mostrar la hora en el escritorio (en sustitución del reloj de la barra de tareas, o no).
Captura de escritorios

Es una versión modificada de este plasmoid para embellecerlo (creo), he cambiado:
– Fuente, por defecto ahora usa Minya Nouvelle, aunque en el menú de contexto podéis cambiarla a vuestro antojo.
– Textos alineados a la derecha, no a la izquierda.
Negrita para la hora, normal para minutos
– Orden español para la fecha (dia, mes, dia-semana)
– Fecha más pequeña
– Cambiado a formato 24h. Eliminada extensión AM/PM.

Creo que gana bastante con respecto al original. Si queréis usarlo en vuestro escritorio KDE4 podéis descargarlo desde aqui.
Minimal Clock, plasmoid v.0.13

a silhouette of a person's head and shoulders, used as a default avatar

Instalar BitTorrent Sync en openSUSE

Bittorrent Sync permite sincronizar archivos entre varios dispositivos de forma rápida, simple y segura mediante el protocolo bittorrent. A diferencia de otras soluciones tipo Dropbox, Google Drive … la comunicación se realiza entre los distintos dispositivos sin necesidad de almacenar…

the avatar of Alberto Garcia

Konsola en KDE con estilo

Ya lo he contado por aquí alguna vez, mi entorno de trabajo en el ordenador me gusta con tendencia minimalista. En general, pero en especial en el trabajo gráfico, me parece fundamental eliminar todos los menúes y botoneras posibles y manejar la aplicación a base accesos directos/métodos abreviados. Me da mucho coraje que lo fundamental, el trabajo que se está realizando, se pierda en una selva de menúes desplegables, solapas, botoneras, barras de herramientas, de progreso, at infinitum.
Lo puedo entender si eres el programador que ha desarrollado el programa y está encantado disfrutando con el panorama de funciones y órdenes que eres de capaz de desplegar para ayudar al usuario… pero si eres el usuario final, pasártela contemplando la interfaz, es poco recomendable (por decirlo con suavidad).
Konsola

Pues el otro día descubrí como minimalizar la konsola de KDE a su expresión más simple y dejándola más bonita que la original. Muy sencillo y en dos cómodos pasos:
– Sobre el borde de una konsola de KDE pulsamos botón derecho y elegimos “Preferencia específicas de ventana“. Nos vamos a la solapa “Apariencia y fijados” activamos la casilla “Sin barra de título y marco“. Aceptar.
Con esto eliminamos toda la decoración y bordes, pero entonces se nos queda todavía muy fea.
– Lo siguiente es aplicar una hoja de estilos personalizada (stylesheet) a la konsola en el momento de abrirla. Así es que en Kate creamos un archivo de texto con el siguiente contenidoQFrame {border:1px solid #AAAAAA; }
y lo guardais en ~/.konsole.qss
Ahora lo único que tenéis que hacer es cambiar las llamadas a ejecutar konsole añadiendo la opción konsole −−stylesheet /home/tu-usuario/.konsole.qss

La hoja de estilo funciona casi igual que CSS de HTML, obviamente cambian las clases y los elementos. Investigadlo, podéis empezar probando con los elementos QFrame, QListview, QScrollBar, QTabBar…

the avatar of Alberto Garcia

Estabilizar luz (deflicker) de un timelapse en Linux

Un timelapse es una secuencia de fotografías tomas a intervalos regulares y procesadas posteriormente para componer con ellas una secuencia de vídeo. Hasta ahí todo claro. El problema es que para que la secuencia de vídeo tenga cierta continuidad, suavidad y aspecto “real” hay cumplir una serie de requisitos. La exposición fotográfica y el control del balance de blancos en la cámara debe ser dispuesta en modo manual de lo contrario los continuos ajustes que la cámara haga entre fotograma y fotograma provocarán una película llena de “saltos” en la luz de la escena, algunos muy sutiles y otros auténticas verbenas de luces.
El verdadero problema es que incluso estableciendo estos controles en manual estos saltos de luminancia, por otras cuestiones, siguen apareciendo. Es raro que una réflex haga en idénticas condiciones 250 fotos exactamente iguales y que no “salten” al verlas en formato de vídeo (parece que este defecto solo afecta a las réflex no a compactas por lo que muy probablemente se deba a pequeñas imprecisiones del diafragma del objetivo, reflejos internos de luz en el visor, etc… ).
Es el llamado “flickeo” de un timelapse, pequeñas variaciones de luz entre fotogramas contiguos que provocan que el vídeo “parpadee” muy sutilmente resultando extremadamente molesto.

Herramientas deflicker

Para evitar este “flickeo” aparecen las herramientas de “deflicker“. Básicamente son script muy sencillos que toman la secuencia de fotografías (ojo fotos originales, no vídeo resultante) analizan la luminancia de los fotogramas con sus “vecinos” y la alteran para amortiguar estos saltos de luz.
Como os podéis imaginar hay multitud de herramientas, de las que he probado y con diferencia la que mejores resultados produce es VirtualDub, una herramienta opensource para Windows con la que manipular vídeos y secuencias fácilmente.
Para GNU/Linux en terminal existe otra herramienta todavía más sencilla pero con muy buenos resultados: timelapse-deflicker.pl, un script en PERL.

Timelapse-deflicker.pl

Para instalar el script simplemente descarga este archivo timelapse-deflicker.pl, guardalo en ~/bin/, hazlo ejecutable (chmod +x ~/bin/timelapse-deflicker.pl) y ejecuta en consola timelapse-deflicker.pl -hEs posible que tengas que instalar algunas librerías PERL para que funcione correctamente.

Entra en la carpeta donde tengas la secuencia de imágenes que componen el timelapse y en un terminal escribestimelapse-deflicker.pl -p 1 -w 15 Mi_secuencia*.jpg
Dentro de dicha carpeta el script creará otra llamada Deflickered donde irá produciendo otras tantas imágenes con la luz ya estabilizada. El proceso es lento y puede tardar alrededor de media hora para 250 fotografías. Al final comprueba si el resultado es de tu agrado generando un vídeomencoder mf://Deflickered/*jpg -vf scale -zoom -xy 512 -ovc lavc -o demo.avi

Haz pruebas, posiblemente tengas que probar diversos valores de -p y -w, yo suelo utilizar 2 pasadas (-p 2) y anchura de 30 (-w 30)timelapse-deflicker.pl -p 1 -w 15 Mi_secuencia*.jpg
Ten en cuenta, si el parpadeo (flicker) es fruto de un timelapse hecho con el exposímetro o el balance de blancos en automático, no hay Deflicker que lo arregle.

the avatar of Alberto Garcia

Explorar y buscar fotos de Digikam desde Firefox

Ya lo he comentado por aquí muchas veces, para el archivo/clasificación de mis fotografías/vídeos soy fans incondicional de Digikam, gestor y editor de fotografías especialmente desarrollado para GNU/Linux y KDE pero también exportado desde unos años a MAC y Windows.
Los motivos son muchos, a continuación os demuestro como explotar dos de sus características más fundamentales: la clasificación por etiquetas y el uso de bases de datos SQLite.

La clasificación por etiquetas (tags) está muy extendida y popularizado y podéis verla en funcionamiento en casi cualquier servicio de gestión de álbumes fotográficos online como Picasaweb, Flickr ó mi propia galería de fotos/vídeos.
Consiste básicamente en asignar un término/expresión/clave a la imagen para posteriormente poder filtrar las búsquedas y de esta manera localizar rápidamente una imagen entre un millar.
La utilidad salta a la vista. En mi caso que vengo clasificando fotografías en Digikam desde que tengo cámara digital (2002) me permite encontrar cualquier foto en unos segundos entre las casi 60.000 fotografías que tengo clasificadas.Clasificación por tags en Digikam

Digikam implementa desde sus inicios de un completísimo conjunto de herramientas desde los cuales el etiquetado de imágenes (y vídeos) es tremendamente fácil con un buen montón de funciones para etiquetado masivo, por jerarquías, anidadas, renombrar, mover, copiar, asignación/desasignación, automatización de tareas, búsqueda, filtrado, repetición, etc… Cada semana entre 100-300 fotografías/vídeos procedentes de las cámaras de fototrampeo entran en mi base de datos. Todos perfectamente etiquetadas por la especie/s de que se trate y el identificador de la cámara que lo grabó. De este modo puedo cuando quiera ver todos los vídeos que tengo de ginetas ó todos los grabados por la Cámara22A.
Arrancando Digikam podemos encontrar casi cualquier foto en segundos a base de filtrar por etiquetas, o por fecha, o por nombre, o por todo a la vez… pero ¿y si no queremos ni siquiera iniciar Digikam?

Acceso externo a la base de datos

Ventajas de software libre, Digikam guarda todos los datos en bases de datos en formato sqlite. Con algunos conocimientos de bases de datos sqlite y unos pocos de Firefox podemos en segundos hacer consultas a la base datos (ya hace tiempo expliqué por aquí con acceder a la base de datos para consultar la última fotografía alterada en la base de datos y generar con ella un splash dinámico).
Pero se puede hacer todavía más sencillo y en entorno gráfico dejando que sea Firefox y Bash quienes hagan el trabajo. A continuación os comento como activar un protocolo en Firefox que nos permita explorar las fotografías etiquetadas en Digikam desde una página web local que se generan de forma dinámica, de tal manera que en segundos podamos consultar/compartir alguna foto/vídeo sin siquiera salir del navegador web.

Protocolo para Firefox

Lo primero es pensar un nombre único para nuestro nuevo protocolo en Firefox. No valen ni http, ni ftp, ni file… :D Por motivos obvios mi protocolo se va a llamar digi://.
Lo que pretendemos hacer es que se nos muestre en Firefox las fotografías etiquetadas bajo una palabra simplemente escribiendo en la barra de dirección digi://gorrion

Abrimos Firefox y en la barra de dirección nos dirigimos a about:config (prometo no ser un manazas). Cliqueamos en el listamos y creamos tres claves nuevas booleanas (si/no las llama Firefox) (sí, una más de las que aparece en imagen).About:config Firefox

Las tres claves a crear y sus valores son:(tipo si/no) network.protocol-handler.expose.digi -> false
(tipo si/no) network.protocol-handler.external.digi -> true
(tipo si/no) network.protocol-handler.warn-external.digi -> true

Donde digi es el nombre que hemos elegido para protocolo, podéis cambiarlo a vuestro antojo (claro, sin espacios ni símbolos especiales y preferiblemente corto)

A continuación, si tratamos de utilizar el recién creado protocolo escribiendo en la barra de dirección algo como digi://etiqueta el navegador nos preguntará qué programa queremos ejecutar para este protocolo. En el diálogo elegimos el script que vamos a crear a continuación.

Script BASH de búsqueda

Desglosar por partes el script sería muy extenso. Os comento de forma esquemática su funcionamiento y os pego el contenido del que yo mismo estoy usando para que los destripéis a gusto.

Cuando escribimos en la linea de dirección de Firefox una url con formato digi://cualquier-cosa se ejecuta este script.
Como variable $1 al script le llega la url completa (digi://cualquier-cosa). Descomponemos y nos quedamos con cualquier-cosa. Con este término realizamos una consulta a la base de datos de nuestra instalación de Digikam (si aún no tenéis instalado necesitareis instalar sqlite3). La orden sqlite3 que podéis ver en el script es sqlite3 "$bd" "SELECT b.relativePath || '/' || a.name FROM images AS a JOIN albums AS b ON a.album = b.id WHERE a.id IN (SELECT imageid FROM imagetags WHERE tagid IN (SELECT id FROM tags $condicional))" | sort
Esta orden nos devuelve una lista ordenada de archivos con PATH ABSOLUTO de todas las imágenes que Digikam tiene catalogados bajo la etiqueta cualquier-cosa (en realidad la orden es algo más compleja pero para no aburrir).

Una vez tenemos la lista de archivos construimos y generamos un HTML en /tmp y mandamos a Firefox que abra este archivo. Las imágenes son ampliables cliqueando y los vídeos reproducibles directamente en Firefox (mp4 embebido con tag VIDEO) Condicional digi://tejon,gineta

Limitaciones y extras

Como veis en realidad es proceso es muy sencillo ahora bien, tiene algunas limitaciones:
paginación: Hay que paginar (sí o sí) y limitar el número de imágenes/vídeos que se muestran por página. Tened en cuenta que los vídeos e imágenes se muestran tal y como los tenéis guardados. En mi caso fotos pueden ser fotos de 8000 pixels y vídeos MP4 de 1920 pixels. En cuanto le metáis a Firefox un página con muchos de estas imágenes y vídeos le va a venir un calentón de agarrate y no te menees (probado ayer: una página con 1600 fotos/vídeos de Garduñas lo dejan colgado cargando sin responder durante varios minutos).
Esta necesidad de paginar enfanga un poco el contenido del script que de no ser por así sería mucho más “limpio”.

Caracteres especiales: Todavía no me he puesto a arreglarlo, pero no debería ser muy complicado de arreglar. Caracteres especiales como ñ generan archivos con la codificación de caracteres erronea que no encuentra Firefox. Temporal. Por ahora lo soluciono buscando GARDU en lugar de GARDUÑA.

Busqueda condicional: Podéis buscar dos etiquetas al mismo tiempo usando la coma. Por ejemplo digi://gineta,tejon devolverá fotografias etiquetadas con alguna (condición OR) de estas etiquetas.

Formato de vídeo: Los vídeos se reproducen en Firefox siempre y cuando sean de formato compatible con la etiqueta HTML5 VIDEO. Con el plugin mplayerplug para Firefox/Linux los mp4 se reproducen perfectamente redimensionados y a pantalla completa.

CSS, en las primeras líneas del script tenéis las líneas de CSS para personalizar la presentación de las fotografías a vuestro gusto. No hay grandes florituras, pero bueno si queréis poner el fondo de color rojo es fácil.

velocidad, a cada solicitud se hace una consulta MYSQL y se generan uno o varios html en /tmp. Esto le puede llevar desde unas decimas a varios segundos. Haciendo búsquedas de varias miles de fotografías (2800) se demoró unos 11-12 segundos. Esto claro, varía entre una máquina y otra.

Miles de archivos

Descargar script bash

Podéis descargar y personalizar el script desde aqui.
Lo copiáis a vuestro ~/bin y lo haceis ejecutable (chmod +x ~/bin/digi.protocol). Cuando Firefox os pregunte con qué abrir el protocolo digi:// lo dirigís a este archivo. Y a jugar.