viernes, 18 de noviembre de 2011

Para la reproducción de vídeos hace ya tiempo que optamos por usar Cuaderno de campo el reproductor open-source JW-Player 5.2 y que muy probablemente sea el reproductor más extendido. Es potente, gratuito, facil de usar e instalar, versatil y dispone de una extensa bibilioteca gratuita y/o pago para extender sus posibilidades, efectos, aspecto, etc…
Entre otras opciones incluye la posibilidad de personalizar el aspecto visual de reproductor mediante el uso de pieles (skins). En la página oficial disponeis de un buen monton de ejemplos de pieles, la mayoría gratuitos.

Carga retrasada de youtube

Para no perder la costumbre no me gustaba ninguno (con lo que me gustan a mí los diseños blanquitos y minimalistas me sorprende como la gente puede gustarle una interfazes tan rematamente feas y que acaban siendo más grande que el propio video que hay dentro) así es que aprovechando lo fácil que resulta construir tu propia piel para el reproductor me hice una que imita el estilo de la usada por Blip.tv que es un diseño que me gusta más que el que trae JW-Player ó Youtube por defecto.

El aspecto final es que podeis ver en el vídeo de la izquierda y ya en todos los vídeos de las páginas de vídeos y en casi todos los del blog (no se implementa en algunos casos, o vídeos de hosting diferentes a blip/youtube, playlist) : fondo transparente, barra de tiempo y buffer en grises y de progreso en rojo, botón de play y slider de volumen, tiempo de reproducción y duración total. Na más.

Quien tenga interés puede descargarlo usando este enlace y editarlo a su gusto. Lo he reducido a la mínima expresión (11Kb), solo están definidos los botones de la barra de control y el xml.
Para usarlo basta con incluir la variable skin: «http://tudominio/skin_trebola.zip» al llamar al reproductor Flash

lunes, 31 de octubre de 2011

Este proyecto de Arduino es tan simple como el mecanismo de un botijo, literalmente, conceptualmente esto es un botijo hecho con arduino, pero es probable que sea el más práctico de los realizados hasta ahora. Cuanto más complicado más inútil, y viceversa, cuanto más simple más práctico, bonita moraleja.

Una de las limitaciones propias de tener animales y plantas en casa son las obligaciones que generan. Da igual que los animales sean canarios y peces, para ellos un martes es indistinguible de un domingo, su estómago funciona de igual forma.

En nuestra última salida a Galicia decidimos no incordiar a ningún familiar/amigo con la tarea de «pasarse a ver si lo canarios tienen agua y darle de comer a los peces«. Dispuse un depósito de 8 litros de agua como bebedero y me ingenié un sistema de alimentación para los peces (alrededor de 80-100 platys) que viven en la tinaja del patio.
El problema de la alimentación de los peces es que si se les dá en exceso se contamina el agua y puede provocar un bloom bacteriano que en el peor de los casos acabe con un buen montón de peces muertos y si se les dá poco pues 3/4 de lo mismo. Si bien los platys se «distraen» mordisqueando algas y con el agua fresca se les puede «aletargar» fácilmente una temporada preferí no arriesgarme con un semana de parón y sobretodo costando tan poco trabajo.

(En el vídeo, si no teneis ganas de escuchar el rollo, para ver el funcionamiento moverse hasta el minuto 2:00)

Dispensador de comida

La mayor dificultad de este invento viene dada por la particular presentación de la comida de peces: pesa muy poco, absorbe humedad ambiental como una esponja reseca y es muy grande. En las primeras pruebas que hice, con un bote abierto completamente, la humedad ambiental del patio era suficiente para que por la mañana la comida estuviese convertida en pasta grumosa y solidificada en el fondo del envase, hasta tal punto solidificada que ni sacudiéndolo con fuerza caía fuera del bote.
La solución vino disponiendo una tapa basculante que evitaba la «caída de humedad» dentro del bote (y posibles chispeos veraniegos) y procurando que los movimientos del bote fuesen bastante bruscos para «desatascar» el contenido.
Esta tapadera basculante tiene una ventaja, el propio movimiento de giro del bote provoca que esta tapadera golpee el envase en cada giro, consiguiendo que «desatranque» posibles apelmazamientos de las escamas.

Sigue leyendo…

miércoles, 26 de octubre de 2011

Para ordenar una lista de elementos en un terminal bash disponemos de sort, la cual ordena la lista que le pasemos. Podemos ordenar alfabéticamente los archivos de un directorio o una lista devuelta por otro programa con#> echo -e "boro\nzirconio\nnitrogeno\nhelio\nplomo" | sort
boro
helio
nitrogeno
plomo
zirconio

Pero ¿y para desordenar una lista ?
Copia la siguiente línea en el archivo ~/.alias de tu máquina

alias unsort='while read linea; do echo "$RANDOM::$linea"; done | sort -n|sed "s/[0-9]*:://"'Que viene a decir: a cada línea recibida le anteponemos un número al azar, ordenamos las líneas según ese número y devuelve esa lista después de quitarle dicho número.

A continuación puedes hacer#> echo -e "boro\nzirconio\nnitrogeno\nhelio\nplomo" | sort | unsort
nitrogeno
zirconio
boro
helio
plomo

O por ejemplo escoger 5 archivos al azar en un directorio conls -1 | unsort | head -n5

jueves, 13 de octubre de 2011

Desde hace ya muchas versiones atrás se puede establecer el icono de un álbum en Digikam simplemente arrastrando una imagen sobre una carpeta y seleccionando en el menú de opciones que aparece «Establecer como miniatura del álbum«.

AntesAntes

Si queréis iconizar muchos álbumes ó simplemente automatizar la creación de dicho icono podéis hacer en un terminal: basedatosDigikam "UPDATE albums SET icon=(SELECT id FROM images WHERE album=albums.id ORDER BY modificationDate DESC LIMIT 1) WHERE icon IS NULL"
Siendo basedatosDigikam el alias de
sqlite3 -list /ruta/a/mi/basedatos/digikam4.db

DespuésDespués

NOTA: La orden requiere (of course) sqlite3 y funciona sobre digikam4 (aunque debería hacerlo también sobre las últimas versiones de digikam3).
Esta orden modifica la base de datos. Para evitar sustos y error haz una copia de seguridad antes de jugar con ella. Basta con hacer algo como cp /ruta/a/mi/basedatos/digikam4.db /ruta/a/mi/basedatos/digikam4.db.bak

lunes, 10 de octubre de 2011

Actualmente hay baneadas en este servidor web unas 3749 ips que en algún momento ha tratado de colar spam en el blog (si quereis ver la lista está aquí). La lista está preparada para insertar en un archivo de configuración Apache haciendo algo como:
Include /ruta/servidor/banbots.txtCon esto, cada una de las ips de la lista recibirá un Error 403 Forbiden (no autorizado) para cualquier tipo de acceso.
Consultando dicha lista podemos obtener desde que rangos de ip se recibe mayor cantidad de basura:
cat banbots.txt | cut -d " " -f3 | sed -r 's/([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})/\1\2/' | uniq -c | sort -nr | head -n 20
nos daría los 20 rangos de ips y el número de veces que se repite este en la lista anterior:
104 94.60.
40 173.234.
32 76.107.
28 69.162.
25 64.120.
23 94.63.
16 23.19.
15 91.121.
15 71.205.
14 109.230.
12 50.31.
12 108.62.
11 24.125.
11 173.208.
10 98.142.
10 68.68.
9 88.191.
9 72.8.
9 68.234.
9 38.109.
es decir hay 104 ips que empiezan por 94.60 (Rumania), 40 que empiezan por 173.234 (EEUU), etc…

Ahora podemos completar la linea anterior con cat banbots.txt | cut -d " " -f3 | sed -r 's/([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3}\.)([0-9]{1,3})/\1\2/' | uniq -c | sort -nr | head -n 20 | sed -r 's/ *([0-9]{1,3}) (.*)/-A INPUT -s \20.0\/16 -j DROP/' > archivo.txt; echo "COMMIT" >> archivo.txtQue produciría un archivo de texto con-A INPUT -s 94.60.0.0/16 -j DROP
-A INPUT -s 173.234.0.0/16 -j DROP
-A INPUT -s 76.107.0.0/16 -j DROP
-A INPUT -s 69.162.0.0/16 -j DROP
-A INPUT -s 64.120.0.0/16 -j DROP
-A INPUT -s 94.63.0.0/16 -j DROP
-A INPUT -s 23.19.0.0/16 -j DROP
-A INPUT -s 91.121.0.0/16 -j DROP
-A INPUT -s 71.205.0.0/16 -j DROP
-A INPUT -s 109.230.0.0/16 -j DROP
-A INPUT -s 50.31.0.0/16 -j DROP
-A INPUT -s 108.62.0.0/16 -j DROP
-A INPUT -s 24.125.0.0/16 -j DROP
-A INPUT -s 173.208.0.0/16 -j DROP
-A INPUT -s 98.142.0.0/16 -j DROP
-A INPUT -s 68.68.0.0/16 -j DROP
-A INPUT -s 88.191.0.0/16 -j DROP
-A INPUT -s 72.8.0.0/16 -j DROP
-A INPUT -s 68.234.0.0/16 -j DROP
-A INPUT -s 38.109.0.0/16 -j DROP
COMMIT
esta lista puedes insertarla rápidamente en el firewall con iptables-restore echo "*filter" | cat - archivo.txt | iptables-restore --noflush

sábado, 10 de septiembre de 2011

Que suerte que tengo! Esta mañana me ha llegado un SMS de Movistar que, ojo!! sin siquiera haberlo solicitado me dice tengo un premio!! que solo tengo que llamar 1200 veces al 1200 cada 1200 milisegundos (o algo así, hablo de memoria). Así es que yo, que soy de naturaleza vaga, subespecie vaguérrima, me hice un script que, tal y como ellos me aconsejaban se pase la mañana llamando hasta conseguir el premio. Ahora mismo está llamando, debo estar a punto de recibir una llamada de la suerte.

Mi ordenador a punto de conseguir un premioMi ordenador a punto de conseguir un premio

La situación inversa a esta, es decir la de manejar el ordenador con el móvil ya la comentamos en otro apunte, esta es incluso más fácil. Básicamente consiste en (una vez vinculado el ordenador-móvil por Bluetooth) construir un script en Python que tome control del móvil y ejecute comandos AT en el teléfono.
El script más elemental sería algo como esto (asegúrate de que tu móvil tienen cobertura, está localizable para tu ordenador y no está en uso por otro programa) abre un terminal, ejecuta python y escribe:>>>import bluetooth
>>>telefono="00:11:22:33:44:55" # obtén tu ID con hcitool scan
>>>puerto=1
>>>destino=1200
>>>so = bluetooth.BluetoothSocket(bluetooth.RFCOMM)
>>>so.connect((telefono, puerto))
>>>so.send('ATZ\r')
>>>so.send('ATD'+destino+';\r') # llamando ...
>>>so.send("AT+CVHU=0\r") # toma control del auricular
>>>so.send("ATH\r") # cuelga

Eso realizaría una llamada desde tu teléfono al número «destino» que resultaría cancelada al ejecutar las dos últimas lineas.
A partir de ahí es fácil, la idea es dejar un teléfono junto al ordenador y llevar otro encima, de tal manera que podamos programar el ordenador para que nos avise de algún evento en cuanto este se produzca de una forma tan sencilla como una llamada perdida a tu teléfono. Un correo electrónico que esperas, una grabación en la webcam del patio, un subidón de temperaturas de la cpu, etc…. bastaría con una código de nº llamadas perdidas + duración llamada para identificar el mensaje recibido: 1 llamada corta perdida de mi ordenador=la descarga ha terminado, 3 llamadas cortas=detectada actividad en camara1, 1 llamada larga que se corta a la mitad=toi ardiendo…. y todo con coste 0.

(Nota:coste cero siempre y cuando no descuelgues la llamada. Nota II: si te llama tu ordenador por teléfono, no lo cojas!! no es pa tomar cerveza!!)

Sigue leyendo…

Cuaderno de campo es un blog desarrollado y mantenido por Trebol-a y en el que escriben Trebol-a, Miguel, Merche y Mónica
Si quieres saber algo más sobre los autores acude a la página acerca-de, si quieres contactar con alguno de nosotros hazlo a través de contactar ó de Google+

Creative Commons: Todo el contenido de la web (imágenes, textos, vídeos, a excepción de aquellas obras de otros autores enlazados por Cuaderno de Campo) se acoge a los términos expresados en la licencia Creative Commons