Hace tiempo puse un método para la comparación de números decimales en Bash. Aunque funciona perfectamente no deja de ser algo chapuza multiplicar por 100000 para eliminar los decimales. Ignoraba que la misma orden que se usa para hacer las operaciones aritméticas, BC, admite también las comparaciones (< menor que, > mayor que) con ó sin decimales con lo cual además de elegante se acorta la tarea ya que la comparación se hace al mismo tiempo que la operación aritmética. Infinitamente más elegante es hacer esto:
a=12.2
b=24.4
if [ 1 -eq $(echo "($a - $b) > 0" | bc) ]; then
echo "A es mayor que B"
else
echo "B es mayor que A"
fi
Comparar decimales en Bash II
domingo, 1 de septiembre de 2013 (Hace 95 dias)Tweetdeck en KDE y un bug curioso
miércoles, 21 de agosto de 2013 (Hace 106 dias)No soy muy aficionado a correr aplicaciones de Windows en mi escritorio Linux con Wine, no por fundamentalismos u otros sino simplemente porque si la aplicación es mínimamente compleja ó requiere cierta integración con el sistema (aceleración gráfica y demás) lo normal es que funcione mal/muy mal. Quizás aplicaciones pequeñas, sencillas y muy concretas pudiera tener sentido, pero claro para esos casos es muy raro que el escritorio de GNU/Linux no disponga de su aplicación equivalente, mejor integrada, mejor ejecutada, más rendimiento, etc… raro, pero no imposible.
Desde que Twitter caducó forzosamente hace un par de meses su API 1.0 provocó que multitud de pequeñas aplicaciones dejaran de funcionar, entre ellas mi favorita Choqok 1.1. Me jodió porque me obligó a prescindir de mi Choqok con código personalizado en muchos sentidos, incluidos los créditos de autor.
Actualmente el desarrollo de Choqok (al menos la última vez que lo miré) está abandonado. Es posible que la última versión (yo usaba la penúltima) funcionase ya con la nueva API, pero obligaba a actualizar mi openSuse 11.4, algo que no quería hacer.
Así que es un plis me quedé sin aplicación de escritorio para Twitter. Tenía instalado Qwit un fronted para Python que no me gusta, Ttyter un cliente Twitter hecho en PERL para terminal/consola, pero exige demasiada atención/implicación y las varias herramientas de fabricación propia que me permiten la publicación rápida y automatización de tareas. Pero falta (y hasta donde conozco sigue faltando) un cliente bueno, bonito y barato para escritorios Linux, así es que descargué TweetDeck, disponible para Windows/Mac pero no Linux.
TweetDeck se instala y se ejecuta bien en Linux usando Wine. Es bonito y práctico, y mediante una regla de ventana lo tengo maximizado en un monitor, sin decoraciones de ventana y siempre-al-fondo, de esta manera se comporta como parte del escritorio, no como otra ventana, así que la integración es perfecta. Solo tiene un problema: no me deja dejaba escribir acentos (me consta que a más de uno de los que me leen esto les suponían sufrir sudores fríos leer algunos de mis tweets ya de por sí faltones)
En realidad el comportamiento es bastante más rocambolesco: sí deja escribir vocales acentuadas, pero sólo una, y siempre diferente en cada reinicio de la aplicación. Es decir, podías iniciar Tweetdeck y escribir camión pero no sinfín. Reiniciabas el programas y viceversa. Podías escribir sinfín pero no á é ó ú.
Un error cuando menos curioso que sigue activo pero evitable gracias a que hace unos días descubrí accidentalmente la solución: la tecla Bloq Mayúsculas.
Teniendo pulsada esta tecla sí puedes escribir mayúsculas acentuadas, bien pues si teniendo bloqueadas las mayúsculas pulsamos alguna de las otras dos Mayúsculas volveríamos e escribir en minúsculas y esta vez sí con posibilidad de acentos. En cuanto desactives Bloq Mayúsculas volverás a la situación original y solo podrás escribir una vocal acentuada.
Dicho de otra manera: para escribir en TweetDeck minúsculas acentuadas tienes que tener activado el Bloqueo Mayúsculas (izquierda del teclado) y escribir minúsculas desactivándolo con cualquiera de las otras teclas de Mayúsculas.
Curioso ¿no? ¿soy al único que le pasa?
Video con estilo "Instagram"
martes, 16 de julio de 2013 (Hace 142 dias)Aunque el servicio de vídeo de Instagram no creo que alcance la popularidad de su original servicio de fotografía ya se pueden multitud de vídeos con el sello característico de las imágenes manipuladas por este popular programa para smartphones: virado, saturación, contraste, viñeteo y formato 1:1 han marcado estilo y han conseguido algo aparentemente absurdo: que nos gastemos un paston en un movil de última generación para conseguir hacer que graben una escena como lo haría una caja de zapatos, y de las malas.
Pero mira, el servicio está ahí, funciona bien y tiene éxito, y ciertamente hay efectos y fotos que lucen bonitos cuando al modo tradicional probablemente no sobresaldrían de entre las «normalitas». Ahora el efecto se extiende al vídeo.
Si os gusta el efecto tipo «instagram«, desde una consola de GNU/Linux y teniendo MELT/MTL instalado podéis probar la siguente orden:melt video.3gp -filter vignette radius=0,6 smooth=1 mode=1 -filter gamma:0,9 -filter frei0r.coloradj_RGB R=1,2 G=1,6 B=1,2 -filter frei0r.levels "White output=2.0" Channel=3 "Show histogram=0" -consumer avformat:video_salida.avi
A la izquierda un vídeo tal y como lo graba el movil HTC Wildfire y a la derecha tras aplicarle el filtrado.
Twittear via Python
jueves, 13 de junio de 2013 (Hace 175 dias)Ayer (por el 12/Junio) murió (fue muerta) el API 1.0 de Twitter así es que todas aquellas aplicaciones que no hubieran sido actualizadas a su versión 1.1 dejaron de funcionar. Ni que decir tiene que en mi caso dejaron de funcionar todas las aplicaciones.
Choqok (cliente de escritorio KDE4), Ttyter (cliente para terminal) y la aplicación Python basada en Tweepy que utilizo para generar avisos de actualizaciones del feed, publicaciones de fotografía/vídeo, eventos clima y cámaras, etc… todo muerto. Tuve que actualizar Ttyter a su última versión (Choqok tendrá que esperar ya que pide actualizar KDE4) y reconstruir el script python/Tweepy.
A modo telegrama os cuento como hice esta mini-cliente y como usarlo. Es bien sencillo.
Descarga librería Tweepy
Descarga, descomprime e instala
wget https://github.com/tweepy/tweepy/archive/master.zip -O tweepy.zip
unzip tweepy.zip
cd "~/carpeta de descargas/tweepy-master"
sudo python setup.py install
En mi caso además tuve que preinstalar las librerías setuptools que exigen esta nueva versión de Tweepy. Básicamente lo mismo de arriba:
wget "https://pypi.python.org/packages/source/s/setuptools/setuptools-0.7.2.tar.gz"
tar xvfz setuptools-0.7.2.tar.gz
cd setuptools-0.7.2
sudo python setup.py install
Lista completa de atributos Nikon D7000
martes, 23 de abril de 2013 (Hace 226 dias)El protocolo PTP permite la comunicación entre una cámara digital y nuestro ordenador. Mediante este Picture Transfer Protocol y a través del puerto USB podemos descargar las fotografías y vídeos (práctica habitual) y/o (mucho más interesante) manejar la cámara desde el escritorio alterando la casi totalidad de sus parámetros de configuración desde la línea de comandos.
Con ayuda (para GNU/Linux) de Gphoto2 y PTP podemos acceder a todas las propiedades de nuestra cámara, consultarlas, cambiarlas, hacer una fotografía y descargarla. Para esto basta con conectar la cámara al puerto USB y en una consola hacer: gphoto2 –auto-detect –list-config. A continuación aparece una lista más o menos extensa con todos los atributos configurables de nuestra cámara (304 en el caso de la Nikon D7000).
El problema es que la inmensa mayoría de estos atributos está sin documentar y al hacer el listado es imposible saber cual es su función ya que al hacer un listado con gphoto2 de los atributos el 80% de estos aparecen listados de un modo tal que:
(...) /main/other/500a
/main/other/500b
/main/other/500c
/main/other/500d
/main/other/500e(...)
Sinembargo si consultamos los atributos individualmente, uno a uno mediante –get-config si que podemos obtener una información más completa sobre su utilidad y sobre los valores admitidos, así es que nada más fácil que hacer un script que recorre estos valores y obtenga una lista exhaustiva de toda la configuración. Después de hacer esto se obtiene esta lista completa de propiedades y atributos de la Nikon D7000 que he guardado en un PDF que ocupa más 60 páginas.
A partir de este listado es mucho más fácil manejar la cámara desde un ordenador y realizar tareas repetitivas como el focus stacking. Para otro apunte.
Acortar url desde linea de comandos o krunner
viernes, 12 de abril de 2013 (Hace 237 dias)Es lo que pasa, que te acostumbras a lo bueno y luego no hay manera de repetir lo que hace dos días era algo cotidiano. A ver quien tiene ahora narices de mandar por correo un enlace a una dirección web de estas que ocupan 4 renglones sin que te respondan neneeeeeee, acorta!. La mayoría de las apliaciones para Facebook, Twitter ó Google acortan las urls de forma automática, pero
¿y si estamos en el escritorio escribiendo un mail ó un documento y queremos acortar una url antes de usarla?.
Siguiendo la línea del anterior Diccionario RAE y Sinónimos este script nos permite acortar rápidamente una url desde la línea de comandos usando el servicio de Google. Pensado para usar directamente desde el lanzador de aplicaciones krunner (de KDE) pero que fácilmente se podrá adaptar a GNOME/MAC.
#!/bin/bash
url=$1
if [ "$url" == "" ]; then
$respuesta="El primer argumento debe ser una URL válida";
else
datos="{\"longUrl\": \"$url\" }"
uri="https://www.googleapis.com/urlshortener/v1/url"
respuesta=$( curl -s -d "$datos" -H 'Content-Type: application/json' $uri | grep 'id":' | cut -d "\"" -f4)
fi
if [ -e $(tty) ]; then echo "$respuesta"; else kdialog --title "Google shorter" --inputbox "$url" $respuesta; fi
Copia este código en un nuevo archivo y guardalo con un nombre breve (bit, por ejemplo) en tu carpeta bin (~/bin), hazlo ejecutable (chmod +x ~/bin/bit). Ahora en KDE basta hacer Alt+F2 y escribir bit http://url/a/acotar.