viernes, 23 de julio de 2010

GTK# - Windows 7 64 bits

Para poder correr un programa escrito en C#, que use GTK#, en Windows, primero es necesario instalar GTK# for .NET. Por lo que el instalador de un programa que usa GTK# debería checar la versión de GTK# ya instalada, si hay una, y si es oportuno ejecutar la instalación de GTK# antes de instalar la aplicación que depende de ella.

El problema aparece cuando estamos usando GTK# 32 bits en un Windows de 64 bits. Si la solución la creamos en MonoDevelop corriendo en Windows no habrá mayores complicaciones. Podemos compilar sin problemas en Windows 64 bits. Pero yo me he topado casos en los cuales después de compilar desde MonoDevelop corriendo en Linux 64 bits, el assembly resultado de la compilación no corre en Windows 64 bits (no hay problema si el sistema es de 32 bits). Aún si en las propiedades del proyecto figura como 32 bits. Mientras que al revés sí funciona, compilar en Windows y luego correr en Linux usando Mono.

martes, 20 de julio de 2010

KRename

Hasta donde yo sé no hay una aplicación similar propia del escritorio GNOME. No obstante esto no significa que para Linux no haya una aplicación así. Supongamos que tenemos un montón de archivos de la cámara digital nombrados con una secuencia de letras y números que no nos aporta ninguna información o que nos dicen la fecha y hora de la foto pero en un formato incómodo de leer. Esto nos lleva a querer renombrar los archivos de una forma más para seres humanos. Por ejemplo: "vacaciones-2010-23-7-15hs.jpg" o, si estamos seguros que los espacios no darán problemas en las aplicaciones que usaremos luego, "vacaciones 2010 23 del 7 a las 17hs.jpg"

Pero hacerlo archivo por archivo sería bastante lento. De hecho, probablemente nos tome varios días. Por eso se necesita una aplicación que pueda automatizar todo o parte del proceso.

lunes, 19 de julio de 2010

GTK# - GtkTextView y el evento KeyPressEvent

Como ya dije en una entrada anterior, mi opinión de C# y el código gestionado ha ido cambiando con el tiempo. Ahora me parece que compilar una aplicación como código gestionado es una gran idea por varias razones. Una de ellas es que el resultado de la compilación es independiente de la plataforma en que correrá, aunque este beneficio se pierde si hacemos llamadas a librerías compiladas como código nativo, ya que deberemos tomarnos el trabajo de compilar esas librerías para cada plataforma y algunas librerías simplemente no estarán disponibles para ciertas plataformas.

Estoy escribiendo un mensajero instantáneo para comunicar las PC de mi hogar, ya sea que estén corriendo Windows o Linux. Uso un GtkTextView como entrada de texto y necesitaba interceptar la pulsación de la tecla Enter pero resulta que el evento KeyPressEvent no se disparaba nunca, aún si el widget estaba conectado a la señal KeyPress. Más de uno debe pensar en este punto que es una falla de GTK# pero no es así. La solución es tan simple como usar el atributo [GLib.ConnectBefore].

lunes, 12 de julio de 2010

Fondos dinámicos en Ubuntu 2

Encontré una aplicación genial y no podía dejar de comentarla en mi blog.

Como todos deben saber ya, Windows 7 tiene la posibilidad de cambiar automáticamente el fondo del escritorio dado un intervalo de tiempo. En esta entrada expliqué cómo conseguí lo mismo en Ubuntu sin instalar ningún software adicional. Pero ahora encontré un método aún mejor.

domingo, 11 de julio de 2010

montar unidad virtual en Linux

Hoy tuve el siguiente problema. Tenía un iso de un DVD que creé a las apuradas con Brasero porque el dueño no me lo podía dejar por más tiempo. Luego, cuando tuviera tiempo, ganas y un DVD vacío, pensaba quemarlo. Pero necesité un archivo de ese DVD y todavía no lo había quemado. Así que lo fui a montar desde la terminal como lo hago siempre, método que aprendí en los foros de Ubuntu, pero esta vez falló dando el siguiente mensaje de error:

mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or other error
In some cases useful info is found in syslog - try
dmesg | tail or so

viernes, 9 de julio de 2010

ffmpeg - batch encoding

Actualización: aunque no voy a borrar esta entrada he encontrado una mejor manera. Usar el comando find que nos permite también ejecutar un comando por cada archivo encontrado.

¿Qué pasa si un colaborador nos ha dado un DVD completo de archivos de medios sin comprimir o con una compresión inadecuada para nuestro sistema, o para el proyecto en que estamos trabajando? Por ejemplo, varios archivos de audio en wav en lugar de estar en ogg. En este caso tenemos los archivos pesando 16 MB o más por 5 minutos de duración cuando podrían pesar 5 MB o menos y sonar igual (para fines prácticos). Al menos que queramos editar los archivos no necesitamos los wav sino que querremos ya el producto final.