domingo, diciembre 31, 2006

Abrazos gratis en Málaga

Qué mejor para estas fechas que un video cargado de energía positiva y buenos sentimientos. Lo ha rodado un buen amigo con su instituto, en las calles de Málaga. A mí ha encantado, así que lo quiero compartir con todos.

viernes, noviembre 17, 2006

Lightscribe para Linux

Tras una larga espera, por fin todos usuarios de Linux poseedores de una grabadora de DVDs con soporte para Lightscribe van a poder usar esta tecnología y así adornar los discos transfiriendo una imagen como portada.

LaCie ha sido la pionera que ha tenido la gentileza de desarrollar un driver para poder usar esta característica en entornos Linux, así como ofrecer un software para etiquetado, ambos gratuitos. Se pueden descargar desde aquí. La verdad es que agradezco bastante la aparición de este driver, que elimina así la necesidad de tener que cambiar un momento a Windows para sólo imprimir la etiqueta de un disco.

El programa para "imprimir" las etiquetas en el disco es bastante sencillo e intuitivo de usar, permitiendo hacer todo en unos tres pasos.

Curiosamente, tras meses de silencio respecto a ofrecer soporte a linux, he entrado en la web oficial de Lightscribe y me he encontrado que ahora se puede descargar el software desde la misma, y al parecer es una versión algo más nueva. LaCie permite descargar la 1.4.113.1 y en la página oficial está la 1.4.124.1. Lo cual me alegra, puesto que parece que va a haber actualizaciones regulares.

jueves, octubre 19, 2006

Primera beta de flash 9 para linux

Por fin ha salido a la luz la primera beta de flash 9 para linux (la versión actual es la 9,0,21,55). Ha sido una larga espera, durante la cual todos los usuarios de este sistema operativo han tenido que resignarse a no poder usar gran parte del contenido flash de muchas páginas, que decidieron elevar los requisitos a flash 9, aún estando otros sistemas operativos estancados en la versión 7.x.

Al ser la primera beta, aún contiene cosas que no están acabadas y algunos fallos ya conocidos (y por supuesto, los que aún están por aparecer). Pero aún así, funciona bastante bien. El plugin es reconocido, los videos se reproducen, ...

Una cosa que me gusta es que ahora (o por ahora) puedes descargar separadamente el plugin del reproductor standalone. Por lo que si sólo estás interesado en el plugin solo tienes que bajar un paquete de unos 2.5 megas (al descomprimir son 6 y pico).

La instalación es muy sencilla, sólo hay que reemplazar el fichero libflashplayer.so de nuestra carpeta de plugins the mozilla por el nuevo que se acompaña, y después reiniciar el navegador. Para el standalone player no hay que hacer nada, sólo "chmod +x" y arrancarlo.

La lista oficial de problemas conocidos por ahora es ésta:
  • El modo a pantalla completa y el soporte SSL no funcionan aún (aunque avanzan de que sí serán incluidas en la versión final).
  • Algunos problemas en la imagen podrían aparecer cuando se inicia la reproducción de video.
  • Problema con las fuentes de distintas distribuciones. Incluyendo algunos problemas de formato de textos.
  • El pugin no funciona en Opera, pero están trabajando para solucionarlo.
  • Las conexiones AMF3 no funcionan sobre RTMP.
  • Problemas con el click del botón derecho y el menú de contexto.
  • Algunos problemas de internacionalización.
  • La instalación de Express Install y Acrobat Connect Add-in no funcionan aún.
  • El reproductor que se acompaña, el que no es un plugin, sólo está disponible en inglés.
El mensaje original de la lista de cambios ha sido extraido de aquí.

lunes, octubre 16, 2006

ATI elimina el soporte a las Radeon inferiores a la 9500

En uno de los ordenadores del trabajo, usando Gentoo, tengo una tarjeta gráfica ATI Radeon 9250. Como cada vez que ATI saca una revisión de los drivers, he hecho directamente la actualización leyendo los cambios que se han producido y poco más. Sin embargo, esta vez me he encontrado con la sorpresa de que mi tarjeta no es reconocida y las X no se inician. Así, que nada, de vuelta a la versión anterior de los drivers. Leyendo exhaustivamente el anuncio de los drivers, me encuentro con que la tarjeta más baja soportada es la Radeon 9500, lo que quiere decir que ATI ha decidido dejar de mantener toda la gama Radeon inferior a ese modelo. Lo cual es un problema, puesto que que el kernel 2.6.18 no es compatible con las versiones existentes, obligándote a permanecer en el 2.6.17 si tienes una tarjeta como esas y quieres usar los drivers originales.

Afortunadamente, el soporte de los nuevos drivers experimentales de Xorg (usando la cvs), los r300, usando drm y los nuevos Mesa, ofrecen un rendimiento muy mejorado, con aceleración 3D, habilitando EAX, con lo que vuela el composite (cosa que nunca me llegó a funcionar con los drivers de ATI), así como parece ser la extensión AIGLX (si se usa Xorg 7.1). Los he instalado y estoy bastante contento. La aceleración 3D ofrece un rendimiento algo inferior pero no está demasiado lejos de los de originales. Me ha dado bastante alegría poder usar el composite, mejorando mucho la interacción con el escritorio, pudiendo usar sombras, transparencias, y eliminando el efecto de redibujado de las ventanas.

En fin, parece ser que el desarrollo de los drivers de código abierto para los chips Radeon va por buen camino.

sábado, octubre 14, 2006

Actualizando el blog

Tras bastantes meses, he decidido darle un pequeño cambio de imagen al blog y de paso activar algunas de las nuevas características que incorpora blogger en la nueva actualización, como son las etiquetas. La verdad es que la nueva versión tiene algunas opciones que se agradecen, especialmente en el nivel de administración del blog. Ahora es bastante sencillo personalizar los temas, lo cual se hace de forma gráfica. Antes no había más remedio que editar código. En fin, todavía no he descubierto todas las posibilidades, pero por ahora me gusta.

martes, agosto 29, 2006

Obtener backtraces de KDE en Gentoo Linux

Más de una vez he necesitado obtener un backtrace de una aplicación de KDE tras un crash de la misma, para crear enviar un informe de fallo a los desarrolladores.

Cuando el crash ocurre en una aplicación, KDE muestra un diálogo desde el que se puede seleccionar el backtrace. Desafortunadamente, el código que se lista puede ser totalmente inútil si la aplicación y librerías no se han compilado en modo debug, y con las opciones correctas para el compilador. Es fácil de saber si la traza es inútil, ya que estará llena de symbol not found o cosas parecidas por todos los sitios.

En Gentoo, cuando queremos depurar un paquete, tendríamos primeramente que cambiar un par de cosas en el fichero /etc/make.conf.

- En las opciones de CFLAGS tenemos que asegurarnos que no aparezca la opción -fomit-frame-pointer.

Además, la variable de entorno FEATURES debe contener al menos la opción nostrip.

Ya tenemos preparadas las opciones de compilación. Ahora hay que recompilar los paquetes necesarios. Las kdelibs siempre va a ser necesaria de compilarla en este modo. Y luego las aplicaciones o paquetes que sean. Eso sí, incluyendo la USE="debug" como opción para el emerge.

Por ejemplo, para obtener una traza de kmail yo he tenido que hacer:

USE="debug" emerge kdelibs kdepim

No olvidéis eliminar los cambios del make.conf cuando ya no queráis compilar paquetes en modo debug, ya que compilar de ese modo hace que las aplicaciones funcionen más lentas. Una vez eliminado del make.conf y tras obtener todas las trazas necesarias podemos volver al modo original recompilando otra vez kdelibs y el resto de paquetes.

Java: personalizando JFileChooser

Recientemente, programando en java, he necesitado modificar un JFileChooser para poder introducir un componente adicional en la misma línea de los botones de control (abrir y cancelar).

El JFileChooser es una clase un poco especial, ya que usa bastantes componentes nativas en el UI. Buscando por internet he encontrado algunas ideas que me han sido útiles, pero nada concreto que me resolviese el problema del todo.

Quería agregar un JCheckBox con una opción, para que el fichero abriese una sesión en la misma ventana de una aplicación o en una nueva, y pensé que el JFileChooser era un lugar apropiado para ofrecer la opción.

El truco está en sustituir la parte baja del panel con uno nuevo, que incluya dos botones que emulen a los anteriores, y que contenga además el resto de componentes que necesitemos. Otro truco está en hacer que con un PropertyListener se agregue el nuevo panel en el momento adecuado, ya que si no se hace así no funciona.

El resultado sería algo así:


Y el código fuente sería:

------------------------------------------------

import java.awt.BorderLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComponent;
import javax.swing.JFileChooser;
import javax.swing.JPanel;

/**
* Ejemplo de personalización de JFileChooser
* @author airon
* Publicado en http://webpacifica.blogspot.com/
*/
public class CustomJFileChooser extends JFileChooser
{
public CustomJFileChooser (JComponent component)
{
super();
this.setControlButtonsAreShown(false);

JButton acceptB = new JButton("Open");
JButton cancelB = new JButton("Cancel");

final JPanel panel = new JPanel();
panel.setLayout(new BoxLayout(panel,BoxLayout.X_AXIS));
panel.add(component);
panel.add(Box.createHorizontalGlue());
panel.add(acceptB);
panel.add(Box.createHorizontalStrut(4));
panel.add(cancelB);

Insets insets = this.getInsets();

panel.setBorder(BorderFactory.createEmptyBorder(
insets.top,
((insets.left>=2)?insets.left-2:insets.left),
insets.bottom,insets.right));

acceptB.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {
approveSelection();
}

});

cancelB.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {
cancelSelection();
}

});

// Tricky way to add an extra component to the dialog
addPropertyChangeListener("ancestor",
new PropertyChangeListener(){
public void propertyChange(PropertyChangeEvent arg0)
{
getParent().add(panel,BorderLayout.SOUTH);
}
});
}


public static void main (String args[])
{
JCheckBox cb = new JCheckBox("Hello!",false);
JFileChooser jfc = new CustomJFileChooser(cb);
int returnVal = jfc.showOpenDialog(null);
System.out.println("Checkbox selected: "+cb.isSelected());

System.exit(0);
}
}

viernes, julio 28, 2006

Foro para linux, Mac, unix, BSD,...

Hace un par de días, creé un nuevo foro, en español, cuyo tema principal es todo lo relacionado con el mundo de las arquitecturas *nix: linux, unix, BSD, Mac OS, Solaris, y un largo etcétera. El nombre que le he dado es Mundonix.

La idea es de tener un pequeño espacio donde compartir cosas. Ya hay unos cuantos subforos creados, pero vamos, habrá que ir moldeándolo ajustándolo a las demandas que vayan surgiendo. Estáis todos invitados, tanto los que ya tenéis experiencia en estos sistemas, como los que queréis iniciaros, aprender y resolver dudas.

La dirección en la que se encuentra es:
http//mundonix.ueuo.com

miércoles, julio 26, 2006

Script para ver sólo actualizaciones con emerge -up world (Gentoo linux)

Supongo que a más de uno le pasará como a mí, que a pesar de hacer uso de /etc/portage/package.keywords, algunos paquetes los emerge con el mítico ACCEPT_KEYWORDS="~x86". Eso unido a que a veces se enmascara una versión después de a ver sido publicada, etc..., hace que tras algún tiempo, no sería nada anormal que uno obtenga en la lista de paquetes a actualizar cuando hace emerge -up world --deep cosas como:

[ebuild     UD] app-text/libwpd-0.8.2 [0.8.4]
[ebuild     UD] net-libs/linc-1.0.3 [1.0.3-r1]
[ebuild     UD] dev-db/hk_classes-0.7.4a [0.8.1] USE="sqlite% -sqlite3%"
[ebuild     UD] dev-db/knoda-0.7.4-r1 [0.8.1]
[ebuild     U ] app-office/koffice-1.5.2 [1.5.1-r1]
[ebuild     U ] kde-base/kdenetwork-3.5.3-r2 [3.5.3-r1]
[ebuild     UD] media-libs/libquicktime-0.9.4 [0.9.7-r1]
[ebuild     U ] media-sound/amarok-1.4.1-r2 [1.4.1-r1] USE="-njb%"
[ebuild     UD] dev-libs/pwlib-1.6.3-r3 [1.10.1] USE="esd%"
[ebuild     UD] net-libs/openh323-1.13.2-r2 [1.15.6]
[ebuild  N    ] dev-java/iso-relax-20041111  USE="-source"
[ebuild  N    ] dev-java/msv-20050627  USE="-doc -jikes -source"
[ebuild  N    ] dev-java/xpp2-2.1.10  USE="-doc -jikes -source"
[ebuild  N    ] dev-java/xpp3-1.1.3.4m  USE="-doc -jikes -junit -source"
[ebuild  N    ] dev-java/dom4j-1.6.1  USE="-doc -source"
[ebuild     U ] app-pda/multisync-0.83_pre20050414-r4 [0.83_pre20050414-r2] USE="-gnokii% -nokia6600%"
[ebuild     U ] kde-base/kde-i18n-3.5.4 [3.5.3]
[ebuild     U ] app-i18n/koffice-i18n-1.5.2 [1.5.1] LINGUAS="-zh_TW%"
[ebuild     UD] media-tv/xawtv-3.94-r1 [3.95-r1]
[ebuild     UD] app-emulation/dosemu-1.2.2-r1 [1.3.2]
[ebuild  N    ] app-accessibility/speech-tools-1.2.3-r2  USE="-doc"
[ebuild  N    ] app-accessibility/festival-1.4.3-r3  USE="-asterisk -doc"

El cual está repleto de "D" que indica que se hará bajará de versión si quitamos la -p (pretend) del comando introducido.

Pues, bien, usando un poquito de grep y otros, es fácil recortar esa lista para omitir los ficheros que quieren bajar de versión. Para ello podemos crear un fichero llamado: /usr/local/bin/emerge-updates y ponerle el siguiente contenido:

#!/bin/bash
emerge -upD world | egrep "(NS? *|U )]" | cut -c 17- | egrep -o "([^-]*-[^0-9][^-]*)*" | xargs emerge $*


Todo el comando emerge en una sóla línea. Le damos permisos de ejecución: chmod +x /usr/local/bin/emerge-updates.

Y si ahora hacemos: emerge-updates -p obtendremos la lista con sólo las actualizaciones, que es bastante más manejable:

[ebuild     U ] app-office/koffice-1.5.2 [1.5.1-r1]
[ebuild     U ] media-sound/amarok-1.4.1-r2 [1.4.1-r1] USE="-njb%"
[ebuild     U ] app-pda/multisync-0.83_pre20050414-r4 [0.83_pre20050414-r2] USE="-gnokii% -nokia6600%"
[ebuild     U ] kde-base/kde-i18n-3.5.4 [3.5.3]
[ebuild     U ] app-i18n/koffice-i18n-1.5.2 [1.5.1] LINGUAS="-zh_TW%"
[ebuild  N    ] app-accessibility/speech-tools-1.2.3-r2  USE="-doc"
[ebuild  N    ] app-accessibility/festival-1.4.3-r3  USE="-asterisk -doc"
[ebuild  N    ] dev-java/iso-relax-20041111  USE="-source"
[ebuild  N    ] dev-java/msv-20050627  USE="-doc -jikes -source"
[ebuild  N    ] dev-java/xpp2-2.1.10  USE="-doc -jikes -source"
[ebuild  N    ] dev-java/xpp3-1.1.3.4m  USE="-doc -jikes -junit -source"
[ebuild  N    ] dev-java/dom4j-1.6.1  USE="-doc -source"

Si queremos proceder a la instalación de todos esos paquetes, tan sólo habría que omitir la -p, es decir ejecutar emerge-updates.

Espero que os sea de utilidad.

jueves, mayo 18, 2006

Por fin udma5 en mi linux

Parece mentira que tras llevar más de un año y medio con mi ordenador, no me diese por comprobar el modo de ultra dma que estaba usando mi disco duro. Me he puesto a trastear y me he llevado sorpresas.

Tengo un Seagate ST3120022A, que soporta ultra dma 100, sobre un chipset Intel ICH5, usando Gentoo bajo kernel gentoo-sources-2.6.16-r7. Hasta ahí bien. Pues bien, me da por hacer un hdparm -i /dev/hda y me encuentro con que está usando udma 33, equivalente a udma2, y encima, es el máximo que soporta. No dando crédito a lo que veía me pongo a trastear.

Lo primero que hago es mirar mi cableado de los buses y me encuentro la gran sorpresa, me han puesto un cable de 40 pines conectando el disco duro al ide, en lugar de uno de 80, con lo cual se fuerza el udma a 33. El cable de la grabadora y cdrom del otro bus sí que es de 80 pines. Así que los cambio y reinicio. Nada, todo sigue igual.

Revisando algunos foros, pruebo a añadir la opción CONFIG_IDEDMA_IVB=y al kernel. Así como pasarle el parámetro al grub (en el grub.conf): ide0=ata66.

Reinicio y por fin hay suerte. Ya tengo udma5 activado. Las pruebas de velocidad (hdparm -tT /hda) reportan una velocidad de aproximadamente el doble a lo que obtenía antes, obteniendo unos 54.75 mb/s de lectura (Timing buffered disk reads).

Ahora el problema es que estoy forzando la grabadora y el lector a udma 33, así que tendré que conseguir otro cable de 80 pines, para quitar ese cuello de botella, pero vamos, eso está hecho, un paseo por la tienda y se acabó.

miércoles, abril 05, 2006

Linux: gamin (FAM)

Con la implantación de inotify en las últimas versiones del kernel de linux, ha surgido un recambio para el demonio FAM (File Alteration Monitor), el cual usa escritorios como KDE, así como otras aplicaciones para optimizar el seguimiento de cambios en los ficheros. El nuevo recambio se llama gamin, y es un sustituto total de FAM pero aprovechando las ventajas de inotify, lo que lo hace muy eficiente, implementando una api idéntica.

Lo he instalado en mi equipo Gentoo.

Para ello he desinstalado FAM e instalado los nuevos paquetes:
  • emerge -C fam
  • Agregado el USE fam a /etc/make.conf
  • emerge gamin
  • Ahora sería útil hacer emerge -upv world --newuse para posteriormente emerger los paquetes que dependan del nuevo USE fam. Personalmente no he tenido que reemerger ninguno. Al rearrancar kde he comprobado que ya hay un servicio de gamin activado (gam_server).

Sony-Ericsson K750i

Hacía algún tiempo que no escribía nada. Pues bien, voy a romper un poco la racha.

Recientemente he comprado el teléfono móvil Sony-Ericcson K750i. Es un auténtico todoterreno:
  • Cámara de 2 megapixeles con flash de LEDs
  • Reproductor de radio
  • Reproductor de mp3
  • Bluetooth, infrarrojos
  • Buen rendimiento 3D
  • Reproductor de películas mp4 y 3gp
  • Ranura de expansión para tarjetas Memory Stick Duo
  • Actualizaciones periódicas por firmware.
Como teléfono no está nada mal, con buena cobertura, buena calidad de sonido, completa agenda para gestión de contactos y lo más importante, cómodo de manejar.

Le he puesto una tarjeta de 1 GB de memoria, para aprovechar un poco sus capacidades como reproductor de mp3. El sonido no está nada mal. Por ahora lo he probado con los auriculares y conectándolo al coche.

La calidad de las fotos es bastante buena si hay suficiente luz. Con poca luz salen un poco granuladas, pero es algo que se puede compensar un poco con el flash que trae incorporado. La cámara contiene un botón muy cómodo que te permite usarlo totalmente como si se tratase de una cámara digital, con la doble pulsación de enfoque y disparo.

Las aplicaciones y juegos funcionan a toda velocidad. La pantalla tiene un buen contraste. La duración de la batería es muy buena. Si sólo lo uso como teléfono me durá alrededor de una semana. Si ya empiezo a usar el reproductor y a tirar fotos o jugar pues evidentemente se acorta, pero vamos, por ahora recargo el teléfono cada 4 o 5 días (usando un poco de todo).

Para mi gusto hubiera elegido otro tipo de teclado, un poco más robusto, pero bueno, por ahora parece que resiste bien el que trae.

De vez en cuando tengo algunos problemillas con el bluetooth, que parece no funcionar bien del todo, pero al parecer es algo bastante común, y se supone que se mejorará con alguna actualización del firmware próxima. Pero vamos, ha mejorado bastante tras la última actualización.

Lo de las actualizaciones es algo realmente bueno que parece que tiene Sony-Ericsson, pues parece que publican frecuentemente nuevas versiones para solucionar algunos problemillas e incorporar mejoras.