Comparación con decimales en bash

Lunes, 30 de agosto de 2010

Necesitaba realizar unas comparaciones de números con decimales, positivos y negativos para unos pequeños scripts que informan sobre el estado del clima (posa el ratón un segundo sobre la imagen de “cielo sobre Cartagena” para leerlo. En la columna de la derecha).

Problema

Si en un script hacemosecho "scale=2; 12.5 - 12.2 | bc -l" nos dará como resultado .3 (sin cero delante).
Para producir un número “entero” (con el cero delante), podemos hacer lo siguientea=12.5; b=12.2;\
echo "scale=6; resta = $a -$b; if (resta < 1 && 0 <= resta ) { print "0" }; print resta" |\
bc -l

Que imprimiría 0.3, PERO si la resta es negativa nos mostrará 0-.3 (cero menos coma tres)

Además ninguna de las formas anteriores es admitida por IF que solo compara números enteros:a=0.3; if [ $a -gt 0.1 ]; then echo "A es mayor que B"; else echo "A es menor que B"; fi
DICE que -->bash: [: 0.3: se esperaba una expresión entera

Solución

Al final una solución de casa de mi abuela: multiplicar todo por 1000 (o cualquier otro factor suficientemente grande como para convertir tus operaciones en números enteros) y a tomar viento. Algo así:#hacemos la operacion que nos producía un decimal negativo
resta=`factor=1000; a=12.2; b=12.5; \
echo "( $a*$factor ) - ( $b*$factor )" | bc`
#$resta es -300.0
#quitamos los decimales
resta=`${resta/.*/}
#$resta es -300
#hacemos comparacion
comparador=`factor=1000; \
echo "$factor * 0.1" | bc`
#$comparador=100.0
#quitamos los decimales
comparador=${comparador/.*/}
#hacemos la comparacion
if [ $resta -gt $comparador ]; then echo "A es mayor que B"; else echo "A es menor que B"; fi
A es menor que B

Kflickr.0.9.1-trebola RPM

Jueves, 19 de agosto de 2010

No sé que hice el otro día probando las KDE4 que me sobreescribí mi querido Kflickr de KDE3 con la versión de KDE4. Asi es que me tocó, descargar de nuevo, modificar de nuevo y recompilar. Para que no me vuelva a pasar he creado un rpm con las modificaciones que tenía mi anterior instalación y (sobretodo) un par de arreglos en la traducción (lo de “ancho de banda del upload” y “autentique un nuevo usuario” me estaban matando).

Este instalador no es más que el Kflickr 0.9.1 para KDE3.5 (descargable desde aqui) pero:

  • Asume un tamaño de envio “Grande” por defecto, de 2048 pixels
  • Asume una licencia Creative commons “Attribution Non Commercial Share Alike

Si alguien tiene interes en descargarlo e instalarlo lo tiene aqui: kflickr.0.9.1-trebola.rpm

Menú de contexto para publicar en Picasa

Lunes, 16 de agosto de 2010

Entre algunos de los cambios que voy poco a poco realizando en Cuaderno de campo esté el de transferir algunas de las imágenes que acompañan los apuntes a una cuenta en Picassa, el servicio de alojamiento de imágenes ofrecido por Google. De esta manera descargo de trabajo a este ordenador y despejo mi cuenta en Flickr para dedicarla exclusivamente a fotografias, no screenshot ni imágenes de apoyo.
Asi es que, como en adelante tengo que publicar bastante imágenes en Picasa y no es cuestión de andar visitando la página y su formulario de uploading, me hice un script y su correspondiente menú de contexto para subir imágenes con un solo click y obtener la url de la imagen inmediatamente después de la subida. Como además el tamaño de la imagen a publicar se indica a traves de la propia url no es necesario siquiera visitar Picasa para nada.
Menú de contexto KDE3 sigue …

Gimp 2.7.1 ventana unica

Viernes, 13 de agosto de 2010

En este repositorio de Lemmy04 para OpenSuse 11.2 teneis disponible la última versión 2.7.1 de Gimp aka “La Deseada” aka “La solicitada ventana unica“.
La opción de ventana-unica al estilo Photoshop era posiblemente una de las cuestiones más demandadas entre los usuarios de GIMP (usuarios demasiado acostumbrados al windows-style todo sea dicho, como si las deficiencias que pudiera tener GIMP – que las tiene, y algunas gordas – vinieran por el número de ventanas).
Gimp con ventana única
Personalmente creo que iré saltando entre el estilo de ventana única y el clásico de ventanas flotantes, principalmente porque a la hora de trabajar no uso ninguno de los dos, simplemente pongo la imagen a pantalla completa, con todos los menues ocultos y atajos de teclado para todo. Lo importante es la imagen no la botonera, y si llevas más de 3-4 dias con esto de la infografía te sabes los atajos de forma casi genética.

Como sabeis en las aplicaciones para GNOME las versiones impares (2.7) indican un versión de transito-desarrollo-innestable hasta la publicación de la versión estable-definita-par (2.8), pero salvo algun fenomeno extraño, apostaría a se trata de una versión perfectamente usable. Despues de varios meses trabajando con la versión anterior 2.7.0 no he tenido ningún problema.

KDE4.5 impresiones

Jueves, 12 de agosto de 2010

Pues las primeras impresiones de las recien estrenadas KDE4.5 es: “me vuelvo a KDE3
Y es una lástima porque están haciendo mejoras muy interesantes en muchos de los programas que componen KDE4, pero es que es innutilizable, y lo he intentado todo:

  • Eliminar archivos de configuración anteriores.
  • Eliminar KDE4 por completo y reinstalar desde cero.
  • Instalar versiones nuevas y “no-tan-nuevas” (por aquello de la innestabilidad de las recientes)

Pero no hay manera.

  • Digikam ni siquiera arranca (ademas de que sigue siendo lento de cojones comparado con su versión 0.9 para KDE3. Por dios que alguien haga un fork de Digikam ya!)
  • Dolphin se cierra cuando se le cruza una mosca
  • Plasma no quiere widget con python y se cuelga con otros.
  • No hay manera de que coja algunos atajos de teclado.
  • y por último los insoportables akonadi, strigi y nepomuk que acaban provocando unas ganas irresistibles de volverse a KDE2 (despues de enviar un email anonimo al que lo ideó)

En fin, es un lástima que KDE4 llegue a su versión 5 que es donde se quedó KDE3 y es una roca, donde todo funciona como una roca, fiable y rapido. Creo que me queda un buen rato en KDE3.

Amarok2twitter

Sábado, 31 de julio de 2010

Para enviar lo que está sonando en Amarok (KDE 3.5) a Twitter. Pega este código esto en un archivo y lo guardas en tu ~/bin como amarok2twitter por ejemplo.
#!/bin/sh
artista=`dcop amarok player artist`
titulo=`dcop amarok player title`
album=`dcop amarok player album`
mensaje="Suena en #Amarok ? \"$titulo\" ($album) de #${artista/ /}"
curl --basic --user user:contraseña --url "http://twitter.com/statuses/update.xml" --data "source=curl" --data "status=$mensaje"

Lo conviertes en ejecutable con chmod +x ~/bin/amarok2twitter. Ahora asigna a una combinación de teclas este script. Listo, cada vez que pulses una tecla aparecerá en Twitter algo como esto.
Para KDE4 habría que usar qdbus, probablemente con algo como
qdbus org.kde.amarok /Player org.freedesktop.MediaPlayer.GetMetadata

Flickr2Twitter script bash

Jueves, 15 de julio de 2010

El problema con los servicios para publicar en Twitter tu fotos de Flickr es que requieren intervención del usuario, es decir: despues de subir la foto te vas a XXX y le dás a enviar y la reenvias también a Twitter.
Pues menuda juerga, se trata de quitar trabajo no de generar más tareas.
Lo que yo quería es un servicio que de forma automática publique en mi perfil de Twitter un enlace a las fotos que publico en Flickr, y eso es lo que hace este script.

Funcionamiento

Se crea una tarea en cron que ejecute el script a intervalos. Como este ordenador está permanentemente encendido lo tengo puesto a cada hora, si el tuyo lo apagas puedes poner un intervalo menor de tal manera que pase menos tiempo entre que se suben las fotos a flickr y se anuncian en Twitter.

El script lee las fechas de tus ultimas publicaciones en Flickr consultando tu RSS de Flickr. Compara la fecha de publicación de la última foto con la fecha guardada de la anterior consulta y si ha cambiado procede a generar un mensaje que se envia a Twitter. El mensaje es diferente si se trata de una sola fotografía, de dos fotografías, de 20 fotografías o de entre 2 y 20 fotografías. Menos en el primer caso en el resto los mensajes son prácticamente iguales.
Si solo se ha publicado una nueva fotografía se obtiene una url abreviada a su página en Flickr y en incorporada junto con su título en el mensaje de Twitter. sigue …

Cliente para twitter en una sola línea

Jueves, 1 de julio de 2010

Jugando ayer en Twitter me hice este mini cliente para Twittear de forma rápida y sin tener que iniciar nada, simplemente abriendo una consola.

Edita tu archivo ~/.alias (o crealo, o incorporalo a ~/.bashrc) y añade:
alias twittear='clear; echo -n "Twittear lo siguiente:"; read mensaje; curl --basic --user usuario:contraseña --url "http://twitter.com/statuses/update.xml" --data "source=curl" --data "status=$mensaje"'

Listo reinicia la consola, y ahora, para enviar un mensaje a Twitter basta con escribir en la consola “twittear“, escribe lo que quieras y pulsa ENTER para enviarlo.
Recuerda, solo puedes hacer esto 150 veces en una hora (limitaciones del servicio de Twitter) :)

PD: Me acabo de dar cuenta. Por motivos que desconozco, en el codigo de arriba aparece delante de las opciones “un solo signo menos” donde deberían aparecer “dos signos menos”. Es decir, donde pone -data debería poner --data

Alien, conversión de DEB a RPM

Sábado, 12 de junio de 2010

Alien es un script PERL que permite convertir ficheros DEB a RPM y viceversa (obviamente esta última conversión, de RPM a DEB, no la he probado). Es ideal para probar algún programa distribuido exclusivamente con el instalador para Ubuntu pero no para Opensuse y cuando no tenemos ganas (y la importancia lo permite) de andar compilando ni resolviendo dependencias.
Lo usé hace unos dias por ejemplo para recuperar un pequeño programita que usé hace tiempo y que no encontraba para openSuse, ContextFree 2.2 y del cual puedes descargar los archivos fuente o el instalador para Debian..
Pues tan sencillo como descargar el .deb y hacer en consola:

alien -r contextfree_2.2+dfsg1-1_i386.deb

esto genera un archivo contextfree-2.2+dfsg1-2.i386.rpm instalable con

rpm -Uvhi contextfree-2.2+dfsg1-2.i386.rpm

Puedes instalar Alien desde los repositorios oficiales de openSuse (openSUSE:/11.2:/Contrib/standard/noarch/alien-8.78-1.1.noarch.rpm).

Nota: Es conveniente (que no fundamental) hacer la conversión como root.
Nota II: Enlace de descarga de Context Free 2.2 RPM para mega-vagos.

Más apuntes anteriores en la categoria GNU/Linux