Fedora 20, Eclipse y Google Talk

Eclipse y el plugin de Google Talk no se llevan bien los toques en Fedora 20. Cada vez que Eclipse necesita renderizar contenido como si de un navegador web se tratase, intenta utilizar WebKit y se cierra inesperadamente. Por ejemplo al abrir su Marketplace.

La solución oficial no sé muy bien si corresponde a Eclipse o a Google Talk, pero de momento las dos formas más famosas de arreglarlo son:

  • Eliminar Google Talk:
# yum erase google-talkplugin
  • O bien editar el fichero de configuración de Eclipse (eclipse.ini) y esta opción para que utilice Mozilla:
-Dorg.eclipse.swt.browser.DefaultType=mozilla

Fuente → Google Talk plugin presence breaks Eclipse in Fedora 20 @ Chris Daniel.

Combinar múltiples imágenes con ImageMagick

En ocasiones puede hacer falta la típica composición de imágenes, una al lado de otra, de m x n celdas. Para eso el comando montage de ImageMagick viene de perlas:

montage -mode concatenate -tile mxn <archivos de entrada> <nombre de salida>

Donde m es el número de columnas y n de filas.

Fuente → Combine multiple images using ImageMagick [superuser.com].

Solución al «Argument list too long» en Linux

Cuando se quiere aplicar una operación masiva como copiar, mover y borrar archivos se suelen usar combinaciones de asteriscos y comodines para no ir de uno en uno. Luego Bash se encarga de expandir los nombres. El problema es que entonces se forma un chorizo de comando con demasiados argumentos. La solución pasa por ejecutar el comando en cuestión archivo a archivo, como por ejemplo con find y xargs para borrar:

find . -name "*" -print0 | xargs -0 rm

Pero ojo, que en este caso find es recursivo, así que habría que acotarlo con -maxdepth 1. Además, así también se pueden ejecutar comandos sobre archivos según fechas y otras características.

Vía → Argument list too long error for rm, cp, mv commands @ Stack Overflow.

«cron» y el último día de cada mes

El demonio cron facilita las ejecuciones programadas cuando se trata del primer día del mes. Sin embargo para el último día de cada mes hay que usar un poco de ingenio y otras herramientas del sistema. Una manera:

30 23 * * * [[ $(date +'%d') -eq $(cal | awk '!/^$/{ print $NF }' | tail -1) ]] && /ruta/absoluta/al/script 1>/dev/null 2>&1

Que cada día a las 2330 comprobará si se trata del último día del mes:

  1. Obtiene el día del mes.
  2. Obtiene el calendario del mes actual.
    1. Extrae el final de cada línea del calendario.
    2. Se queda con la última de esas líneas.
  3. Si el día actual es igual al último día del mes obtenido, se ejecuta lo que le digamos y las salidas las manda a /dev/null.

Fuente → The UNIX and Linux Forums.