viernes, 27 de marzo de 2009

Buscar y sustituir palabras en muchos archivos

Después de empezar a usar find para borrar los archivos, me estoy aficionando a usarlo y he encontrado una utilidad que quiero compartir. Además, la sintaxis es delicada y puede que tenga que echar mano de esto que escribo para recordarla.

El problema que tenía es: dados unos archivos que se llamen parecido... pongamos "grid.vtk"; queremos sustituír una o varias palabras en todos ellos, en mi caso "scalars" por "power_density". Estoy seguro que hay un montón de aplicaciones "de ventanas con botones" que lo pueden hacer, pero también estoy seguro de que se tarda más usándolas. Así que repetid conmigo: La bash es nuestra amiga, la bash es nuestra amiga...

Al grano, abrimos una bash, nos situamos en el directorio del que cuelgan todos los subdirectorios que contienen los archivos que queremos modificar y lanzamos:

find -iname grid.vtk -exec sed -i 's/scalars/Power_density/g' {} \;

Ahora la explicación:

-iname es el nombre de los archivos que queremos cambiar. Acepta comodines. En este caso son todos aquellos que se llamen grid.vtk.
-exec le dice a find que ejecute este comando en cada uno de los archivos:
sed -i 's/scalars/Power_density/g' {} \;
donde:
-i le dice a sed que edite el archivo
s es la opción de sustitución, en este caso busca scalars y lo sustituye por Power_density
g es la opción para que lo haga para todas las coincidencias en el archivo
{} el la ruta al archivo que ha encontrado find, y
\; es el final del comando find, que tendrá algún sentido pero lo desconozco, lo uso como una receta.

Como veréis, la sintaxis de sed se parece mucho a vim, así que aprendemos 2x1.

miércoles, 25 de marzo de 2009

Comparación Ubuntu Intrepid - Leopard

He encontrado en Phoronix una curiosa comparativa entre los dos sistemas operativos que vengo usando en el portátil ahora mismo (aunque también uso el openSuse, pero en los fijos). Para ello han usado un mac mini de la anterior generación, con gráfica intel integrada; vamos, que no han buscado un hardware muy rebuscado.


Los resultados son como poco desconcertantes. En la parte gráfica, incluídos juegos sobre OpenGL, Leopard arrasa. La explicación parece ser la arquitectura MESA de linux sobre los drivers de Intel y parece que están trabajando en ellooooo (que diría el bigotes ;-).

En multimedia, las cosas se igualan. Las codificaciones tanto de MP3 como de OGG son un poco más rápidas en ubuntu 64 bits pero más lentas en ubuntu 32, quedando el OS X en medio. Sí que el mac es más lento cuando se codifica vídeo con FFmpeg.

Al comprimir archivos, ubuntu es mucho mejor usando gzip, quedando en tablas cuando se usa 7-zip.

En operaciones de lectura-escritura en disco, Leopard con su HFS+ simplemente apabulla al EXT3. Será interesante ver la ganancia de Linux con EXT4, siempre que los desarrolladores consigan programar sin que se produzcan pérdidas de datos por la nueva escritura retardada que proporciona(!). Voy a ser malo... qué raro que se haya descubierto el problema en Kubuntu, con KDE4... jejeje.

De Java paso de hablar. Total, para lo que vale...

La gestión de bases de datos con SQLite es muuuucho más rápida en mac. Si se mira la gestión XML, se iguala con el ubuntu 32 bits, quedando el ubuntu 64 como ganador en este aspecto.


Conclusión: un cacao. Yo lo resumiría como: ubuntu, usando todo el arsenal open source, gana en innovación (64 bits y últimas versiones de compiladores y aplicaciones). Mientras, OS X se lleva la palma en integración: drivers más eficientes, equipos más equilibrados, etc. Sólo me contradice el caso del sistema de archivos, ¡pero es que HFS es muy bueno!

Lo que creo que faltaría para que la comparativa fuera más justa y completa: que hubieran usado la última versión de Xcode, que trae el gcc-4.2; y, por parte de ubuntu, incluír un benchmark del EXT4.

domingo, 15 de marzo de 2009

Borrar archivos recursivamente

Supongo que a alguno le ha pasado que, moviendo datos entre distintos sistemas, acabas con una buena colección de archivos específicos del sistema donde no deberían estar.

Más en concreto, al sincronizar datos entre sistemas OSX y GNU/Linux con rsync, si se nos olvida utilizar la salvaguarda --exclude=.DS_Store, arrastramos uno de estos archivos por carpeta, lo que resulta cuanto menos molesto. También pasa algo parecido si hemos usado windows con los archivos Desktop.ini y otros del estilo *.ext.

Usando la bash se pueden borrar todos de un plumazo. Primero nos situamos en el directorio superior y buscamos a ver si tenemos archivos de ese tipo. Por ejemplo, para la morralla que deja el mac, haríamos en nuestro linux:

find -iname .DS_Store

Si nos sale una ristra de direcciones, podemos comprobar que no corresponden a ninguna partición montada de HFS+. En caso de que "casualmente" lo esté, cuidado, desmontadla primero. Una vez asegurados que queremos borrar todos los archivos de la lista, le decimos al comando que los elimine mediante:

find -iname .DS_Store -exec rm {} \;

Si alguno es de sólo lectura, nos pedirá confirmación de borrado.

miércoles, 4 de marzo de 2009

Cosas de Apple

Parece que con la paradiña de Jobs, se acabaron las presentaciones grandilocuentes. Tampoco es que los nuevos modelos sean ninguna revolución, supongo que los fuegos artificiales los dejarán para el Snow Leopard.

Mi impresión, que el mac mini ahora sí que mola. No es que lo necesite, pero es un pedazo ordenador, no demasiado caro (para ser Apple) y te lo llevas en el bolsillo a cualquier lado. Eso ya lo era pero con la nVidia, el firewire y los cinco puertos usb, pues qué más se le puede pedir.

De los otros sólo comento lo más sonado... el precio de la memoria DDR3 que intentan cobrar (¿o robar?). En los nuevos iMac, pasar de 4 a 8 GB cuesta, nada más y nada menos que 900 €... ¡¡¡¡¡Menudo chollazo!!!!!

Y termino con una advertencia. Que no os cuelen el timo del macbook blanco. Están liquidándolos por 799 € en muchos sitios... ¡cuidadín! que es el modelo antiguo, con la gráfica Intel. El que merece la pena pero de verdad es el blanco pero de 899 €, con la nVidia, 2GB de RAM. Vale, trae sólo 120GB de disco pero oye, si quieres más, puedes ponerle uno de 500GB. Y, si todavía quieres más, pues al loro con este accesorio que cambia la unidad DVD por otro disco duro... mmmm... ¿te vale con 1TB en tu macbook? (sí, Roberto, también vale para los nuevos). Ni siquiera tienes que renunciar al DVD, te venden una carcasa externa USB para conectarlo!

:-)

martes, 3 de marzo de 2009

Qt 4.5


Así se anuncia la nueva versión para nuestra librería de GUIs multiplataforma predilecta (no, GTK+ no es multiplataforma por mucho que insistan).

Las novedades: mayor velocidad, nueva modalidad de licencia LGPL, 64 bits para OSX, instalación en un solo paquete, un nuevo IDE, etc.



Me llama la atención el IDE, Qt Creator. Voy a darle un tiento porque la verdad es que el vídeo tiene muy buena pinta. Lástima que parece que puede usar cmake. Seguro que si el IDE es bueno, alguién de KDE lo acaba integrando. Habrá que estar atento.