Los números de 2012

diciembre 30, 2012 Deja un comentario

Los duendes de las estadísticas de WordPress.com prepararon un informe sobre el año 2012 de este blog.

Aquí hay un extracto:

600 personas llegaron a la cima del monte Everest in 2012. Este blog tiene 4.300 visitas en 2012. Si cada persona que ha llegado a la cima del monte Everest visitara este blog, se habría tardado 7 años en obtener esas visitas.

Haz click para ver el reporte completo.

Categorías:Uncategorized

Eliminar locales inútiles

septiembre 22, 2011 4 comentarios

Cuando instalas Ubuntu, tiene la manía de configurar una cantidad de locales absurda. Por ejemplo, cuando haces una instalación para Español de España, además te instala los locales para todas las variantes del Español. Y hay muchas. Esto es bastante molesto cuando usas el corrector ortográfico de Firefox, que cuando quieres elegir el idioma te salen la tira.

Para mejorar esto, hay que hacer dos cosas. Por una parte instalar el paquete localpurge:

$ sudo apt-get install localepurge

Que te dará a elegir qué locales quieres conservar, cepilándose el resto.

Por otra parte, para eliminar variantes que no usas en Firefox, ve a la carpeta /usr/lib/firefox-6.0.2/dictionaries y borra los que no vayas a usar. En el caso del Español por lo menos, la cosa tiene su gracia pq todas las variantes de este idioma apuntan a un mismo fichero de diccionario, con lo cual es totalmente absurdo.

Fuentes:

Categorías:Debian, Ubuntu Etiquetas: , ,

Borrar kernels antiguos

marzo 21, 2011 Deja un comentario

Cada vez que nuestro sistema Linux instala una actualización del kernel (o instalamos nosotros uno compilado por nosotros mismos), la versión anterior no es eliminada. Con el paso del tiempo, se acumulan varias versiones del kernel en el mismo sistema. Esto puede suponer un problema si hemos asignado poco espacio a la partición /boot.

En GRUB aparece una linea por cada kernel instalado, aunque sean versiones viejas. Por una parte esto es una ventaja, ya que da la opción de arrancar con un kernel anterior, por si el nuevo nos da problemas. Muy importante cuando compilamos un kernel optimizado por nosotros, o probamos alguna versión o módulo experimental.

Pero una vez testeado, no tiene mucho sentido mantener los kernel anteriores. Veremos una forma sencilla de borrar los kernels que ya no utilizamos en nuestro sistema Debian/Ubuntu, y liberar ese espacio del disco duro.

Para ver las versiones del kernel que hay en tu sistema usaremos este comando:

$ dpkg -l | grep linux-image

Ahora sólo tenemos que ir borrando el kernel junto con sus headers. Por ejemplo, en el caso en el que quisiéramos borrar un kernel 2.6.34 haríamos:

$ aptitude purge linux-image-2.6.34 linux-headers-2.6.34

Recuerda, es muy importante no borrar el kernel actual. Tampoco borres el paquete linux-image-generic presente en las distribuciones Ubuntu.

Y por último, para ver qué versión de kernel estamos usando ejecuta:

$ uname -r

No rompáis nada 🙂

Categorías:Debian, Ubuntu

Instalar Hot Copy for Linux en Ubuntu

marzo 9, 2011 Deja un comentario

Una vez instalado el paquete en formato APT perfectamente compilado para tu arquitectura, tienes que instalar el módulo precompilado para tu kernel y compilarlo tu mismo. Para la última versión estable de Ubuntu (10.10 – Maverick Meerkat) no hay módulo precompilado, por lo cual hay que hacerlo. Es muy sencillo, ya que existe la utilidad hcp-setup que nos ayuda en esta labor… pero no todo es tan perfecto. Cuando intentas compilar el módulo para el kernel 2.6.35-27-generic da un feo error:

yomismo@kraken:~$ sudo hcp-setup --get-module
Checking for binary module
Waiting                       |
No binary module found
Gathering kernel information
Gathering kernel information complete.
Creating kernel headers package
Checking '/tmp/r1soft-cki.1299670593' for kernel headers
Unable to find a 'include/linux/autoconf.h'. This file is required to build a kernel module
Unable to find a valid source directory.
Please install the kernel headers for your operating system.
To install kernel headers execute:
apt-get install linux-headers-`uname -r`

Dice que no encuentra las cabeceras necesarias para compilarlo e incluso te dice el comando
que has de ejecutar para instalarlas, pero resulta que ya las tengo instaladas. O sea, que algo
raro pasa. El problema es que en el kernel 2.6.35 el fichero autoconf.h está en otro lado:

$ ls /usr/src/linux-headers-`uname -r`/include/generated/

En lugar de este otro:

$ ls /usr/src/linux-headers-`uname -r`/include/linux/

Y es ahí donde falla la rutina que comprueba que los fuentes del kernel estén instalados. A la hora de compilar no afecta donde esté este fichero ya que encuentra la ruta correcta. Sólo es problema del chequéo que hace el instalador. Por tanto la solución es bien sencilla (y podríamos decir cutre):

$ sudo touch /usr/src/linux-headers-`uname -r`/include/linux/autoconf.h

Y listos, hemos creado el fichero autoconf.h donde lo necesita y todo irá como la seda. Lo curioso del invento es que parece que envía los fuentes del kernel a un servidor remoto donde se genera el módulo y luego se lo baja. Supongo que el si otro usuario intenta hacer lo mismo con la misma versión del kernel se limitará a bajar el módulo ya compilado.

Nota: No he conseguido hacer un snapshot, al menos de una partición formateada con ext4 y viendo el log del kernel hay un mensaje aclaratorio:

hcp: ERROR: aborting snapshot, your kernel is broken please downgrade or upgrade, snapshots on block devices with ext4 will cause a dead lock.

con lo cual habrá que esperar a una actualización del kernel. Supongo que debe estar relacionado con este bug: lvm snapshot causes deadlock in 2.6.35.

Categorías:Ubuntu Etiquetas:

Crear un repositorio de Maven

mayo 7, 2010 2 comentarios

Desde que uso Maven evito, siempre que puedo, incluir los jar de las dependencias en el proyecto. Un buen sitio donde localizar estas dependencias es http://mvnrepository.com/. A veces un proyecto mantiene su propio repositorio de Maven, como es el caso de JBoss, y tienes que registrarlo en el pom.xml:

<repository>
  <id>jboss.com</id>
  <name>JBoss Maven Repository</name>
  <url>http://repository.jboss.com/maven2</url>
</repository>

Pero no siempre pueden encontrar las librerías que necesitas en un repositorio de Maven. En en ese caso puede optar por incluirlas en el fuente de la aplicación y registrarlas manualmente:

$ mvn install:install-file -DgroupId=entagged.audioformats -DartifactId=audioformats -Dversion=0.15 -Dpackaging=jar -Dfile=entagged-audioformats-0.15.jar

O puedes crear tu propio repositorio. En este caso hay distintas herramientas que te ayudarán en la tarea, como Nexus. Pero si eres amante de las cosas sencillas te gustará saber que con un simple servidor web también puedes hacerlo.

Para empezar creamos un usuario al que llamaremos “maven” y en su $HOME también vamos a crear los directorio “repository” y “repository/maven2”. Le tendremos que dar los permisos de lectura pertienentes a Apache porque se encargará de servir las librerías. Por tanto daremos de alta un VirtualHost para tener acceso al repositorio:

<VirtualHost *>
  DocumentRoot /home/maven/repository
  ServerName repository.monkiki.org
</VirtualHost>

Mientra, en nuestro ordenador local hay que editar el fichero ~/.m2/settings.xml para establecer las credenciales que nos permitirán registrar librerías en el repositorio que acabamos de crear.

<?xml version="1.0" encoding="UTF-8"?>
<settings>
  <localRepository>/home/monkiki/.m2/repository</localRepository>
  <servers>
    <server>
      <id>monkiki.org</id>
      <username>maven</username>
      <password>s3cr3t0</password>
    </server>
  </servers>
</settings>

Podemos ir incluyendo librerías así:

$ mvn deploy:deploy-file -DgroupId=entagged.audioformats -DartifactId=audioformats -Dversion=0.15 -Dpackaging=jar -Dfile=entagged-audioformats-0.15.jar -Durl=scp://repository.monkiki.org/home/maven/repository/maven2 -DrepositoryId=org.monkiki

En caso de que la librería tenga dependencias, es buena praxis indicar en el registro el pom de dicha librería para que Maven gestione correctamente estas dependencias transitivas, en lugar de tener que incluirlas artificialmente en el pom.xml de nuestro proyecto. Para ello se utiliza el parámetro:

-DpomFile=/path/to/pom.xml

En los pom.xml de nuestros proyectos, hemos de registrar repositorio de esta manera:

<repositories>
  <repository>
    <id>monkiki.org</id>
    <name>Mi repositorio de maven particular</name>
    <url>http://repository.monkiki.org/maven2</url>
  </repository>
</repositories>

Y esto es todo, amigo!

Ver también:

Categorías:Java, Ubuntu

Compilar pdf2swf con soporte para PDF protegidos

abril 19, 2010 1 comentario

Existe una herramienta maravillosa que hace la magia de convertir un PDF a SWF (Flash, para que nos entendamos). Si has usado la herramienta habrás comprobado que no funciona con documentos PDF protegidos dando este error:

FATAL   PDF disallows copying

Pero gracias a que tenemos acceso al código fuente de la aplicación, podemos lo modificar para que se salta dicha comprobación. En concreto tenemos que editar el fichero lib/pdf/pdf.cc y comentar las líneas 136 y 137:

if(!pi->config_print && pi->nocopy) {msg("<fatal> PDF disallows copying");exit(0);}
if(pi->config_print && pi->noprint) {msg("<fatal> PDF disallows printing");exit(0);}}

La versión de GCC que viene por defecto en Lucid Lynx (GCC-4.4) no se lleva bien con el código fuente de SWFTools 0.9.0 por lo que tenemos que instalar una versión anterior:

$ sudo apt-get install build-essential gcc-4.3 g++-4.3

Adicionalmente hay que instalar unas librerías de desarrollo:

$ sudo apt-get install libungif4-dev libjpeg62-dev libfreetype6-dev

Y ya que estamos lo compilamos estático para que corra sin problemas en cualquier otro Linux.

$ CC=/usr/bin/gcc-4.3 CXX=/usr/bin/g++-4.3 LDFLAGS="-static" ./configure

Si quieres compilar para Windows, puedes hacerlo desde Linux usando MingW:

$ sudo apt-get install mingw32

Y luego compilar de esta forma:

$ ./configure --host=i686-pc-mingw32

Dará un error pq faltan librerías, como por ejemplo zlib. Para instalar estas librerías compiladas para Windows visita http://mxe.cc/.

Más información en:  http://www.foolabs.com/xpdf/cracking.html

Actualización: En la versión 0.9.1 hay que modificar el fichero src/jpeg.c cambiando la línea

int jpeg_load_from_mem(unsigned char*_data, int size, unsigned char*dest, int width, int height)

por esta otra:

int jpeg_load_from_mem(unsigned char*_data, int size, unsigned char**dest, int *width, int *height)
Categorías:Ubuntu

Captura y edición de vídeo con Ubuntu

marzo 30, 2010 3 comentarios

Hago vídeos muy de cuando en cuando y luego resulta que no me acuerdo exactamente cómo los edité en Linux. Además que antes usaba Kino y ahora hay aplicaciones más simples de usar como OpenShotPitivi.

Como mi cámara tiene ya sus añitos, no graba directamente en MPEG por lo que es necesario importar ese vídeo hacia el ordenador usando Firewire (IEEE 1394). Además que el vídeo está entrelazado. Debido a un pequeño lío de permisos con el dispositivo de captura, es necesario hacerlo como root para simplificar:

$ sudo dvgrab -a -f avi

Así irá generando ficheros en formato AVI divididos por escenas, ya que es mejor troceado que un pedazo de fichero enorme.

Nota: Según he podido comprobar empíricamente, da mejores resultados hacer un desentrelazado previo y trabajar con estos vídeos mejorados en Pitivi:

$ ffmpeg -i dvgrab-xxx.avi -threads 0 -deinterlace -vcodec huffyuv -pix_fmt yuv422p -acodec copy di_dvgrab-xxx.avi

Para la edición y montaje he preferido usar Pitivi, que aunque tiene menos funcionalidades que OpenShot, ha demostrado ser más estable. Además el formato de los ficheros proyectos es XML con lo que en un momento dado puedes tocarlo si has cambiado los ficheros de lugar. Parece una tontería, pero me ha pasado algunas veces.

Como Pitivi es más bien limitadito, lo único que haremos será juntar los trozos de vídeo haciendo un fade-in / fade-out manual, o sea, editando la línea roja de nivel añadiendo puntos de inflexión con un doble click. Es más complicado de describir que de hacer. Y si queremos ponerle carátula y créditos al final, con Gimp se puede hacer una imagen que se puede insertar en el vídeo. El tamaño adecuado lo conseguimos en Archivo > Nuevo > Plantilla > PAL – 720×576.

El renderizado del proyecto lo haremos en formato OGG (theoraenc, vorbisenc), que es el formato que viene establecido por defecto. El fichero resultante es gordito, pero con poca pérdida de calidad. Luego lo pondremos a dieta.

Por último vamos a codificar la película resultante con HandBrake, con el que además de conseguir un nivel de compresión chachi sin pérdida notable de calidad también desentrelazará las imágenes quedando listo para regalo. En formato elegimos MP4 y en Presets la opción Regular > High Profile.

Nota: Si hemos hecho el desentrelazado previamente como recomendábamos, basta con seleccionar el perfil Regular > Normal.

Nota 2: Mi cámara tiene la posibilidad de grabar en formato 16:9 y entonces la cosa cambia:

$ sudo dvgrab -a -f avi
$ ffmpeg -i dvgrab-xxx.avi -threads 0 -deinterlace -vcodec huffyuv -pix_fmt yuv422p -acodec copy -aspect 16:9 di_dvgrab-xxx.avi

El amigo Pitivi tiene problemas para trabajar con este formato (los vídeos salen estirados como un churro) y no me queda otra que trabajarlos con OpenShot, el cual he podido comprobar gratamente que funciona mejor con esta última versión.

Nota 3: Vale, pues otro descubrimiento más. Si lo desentrelazo así:

ffmpeg -i dvgrab-xxx.avi -threads 0 -deinterlace -vcodec huffyuv -pix_fmt yuv422p -acodec copy -aspect 16:9 -s 720x406 di_dvgrab-xxx.avi

Sí que funciona correctamente con Pitivi. El detalle es forzar el tamaño final de la imagen, que es como debería ser.

Categorías:Ubuntu Etiquetas: , ,