Monthly Archives: February 2009

Conexión a MSSQL desde Aptana utilizando el controlador JDBC de jTDS

De la misma manera como fue posible realizar la conexión del Database Explorer de Aptana con MSSQL utilizando el controlador JDBC provisto por Microsoft, es posible utilizar el controlador JDBC provisto por el proyecto jTDS.  En algunos foros he encontrado que utilizando este controlador se pueden evitar algunos problemas que suceden en determinadas situaciones con el otro controlador.

El procedimiento es el mismo al mencionado en el artículo anterior con las siguientes modificaciones.

  • Descargar el controlador jTDS del sitio de SourceForge del proyecto.
  • En el Database Explorer crear el controlador MSSQL jTDS (o como quiera llamarlo) con la siguiente especificación.
    • Add File: <ruta>/jtds-1.2.2.jar.
    • Driver: net.sourceforge.jtds.jdbc.Driver.
    • Type: Type 4.
  • Connection String: jdbc:jtds:sqlserver://<HOST>:<PORT>/<DBNAME>.  El puerto por defecto es el 1433.
  • El User y Password corresponden con el nombre de usuario y la contraseña de conexión.
  • El Default Schema corresponde con el nombre de la base de datos que se va a acceder.

Enlaces.

Problemas con Nautilus y Bonobo Activation Server en Ubuntu 8.04

En la tarde de hoy estoy instalando Ubuntu en mi equipo de trabajo.  Como el CDROM que tenía a mano era de la versión 8.04 LTS lo instalé primero para después proceder con una actualización de paquetes y posteriormente una actualización a la siguiente versión: 8.10.

Antes de actualizar utilicé Synaptic para instalar algunos paquetes que sabía iba a necesitar y desinstalar cuanto paquete venía por defecto y yo nunca utilizaba.  Entre ellos, Evolution.

Después de un rato de descargar e instalar paquetes reinicié el equipo y al ingresar en mi cuenta Ubuntu me mostraba el escritorio sin paneles ni íconos del escritorio.  Lo único que me permitía hacer era el menú contextual (botón derecho) y cambiar de escritorio (CTRL+ALT+flechas).

Después de algunas pruebas encontré el mensaje de error del problema: "Nautilus can't be used now due to an unexpected error from Bonobo when attempting to locate the factory. Killing Bonobo activation server and restarting Nautilus may help fix the problem".

Gracias a este foro caí en cuenta de algo que había notado pero no había relacionado con el problema, cuando desinstalé Evolution automáticamente se desinstaló también el paquete ubuntu-desktop.  Ese era el problema!

El arreglo de este problema es muy sencillo, se debe abrir una consola de texto presionando CTRL+ALT+F2, haciéndo su correspondiente login y ejecutando el siguiente comando.

$ sudo apt-get install ubuntu-desktop

Regrese al escritorio gráfico (CTRL+ALT+F7) y reinícielo (CTRL+ALT+BACKSPACE).  Problema solucionado!

Conclusión: Evolution no se puede desinstalar sin deshabilitar Gnome, debe estar allí se quiera o no.

Resumen de AJAX con Prototype

Introducción.

Para finalizar la serie de artículos que había escrito acerca del uso de AJAX con el framework Prototype voy a realizar un muy breve resúmen de la sintaxis de las tres formas de realizar la invocación que me serán útiles para futuras referencias rápidas.

Utilizando el Updater.

El Ajax.Updater es una facilidad que toma el contenido del resultado del llamado asíncrono y inserta en el interior del componente especificado.

new Ajax.Updater(ID_COMPONENTE,
                 URL,
{
    parameters: $('FORMULARIO').serialize(true),
    method: 'post'
});

Utilizando el Request.

Esta opción es mas flexible que la anterior y permite manipular el contenido de la respuesta del llamado asíncrono.

new Ajax.Request(URL,
{
    parameters: $('FORMULARIO').serialize(true),
    method: 'post',
    onSuccess: function(transport)
    {
        // Hacer algo en éxito.
    },
    onFailure: function(transport)
    {
        // Hacer algo en fracaso.
    },
    onComplete: function(transport)
    {
        // Hacer algo al terminar.
    }
});

Utilizando JSON para el transporte.

El procedimiento es similar al anterior.  La diferencia es que la respuesta del llamado asíncrono viene empaquetada en un objeto JSON, diferente a la invocación anterior en la que se recibe como una cadena de texto.

new Ajax.Request(URL,
{
    parameters: $('FORMULARIO').serialize(true),
    method: 'post',
    requestHeaders:
    {
        Accept: 'application/json'
    },
    onSuccess: function(transport)
    {
        // Hacer algo en éxito.
        var json = transport.responseText.evalJSON(true);
        // var valorX = json.x;
    },
    onFailure: function(transport)
    {
        // Hacer algo en fracaso.
    },
    onComplete: function(transport)
    {
        // Hacer algo al terminar.
    }
});

Del lado del servidor, en PHP, el resultado final se debe encapsular en un objeto JSON antes de enviarlo al cliente.

echo "/*-secure-\n";
echo json_encode($contacto -> toArray());
echo "\n*/";
header('Content-type: application/json');
header("Status: 200 OK", false, 200);

En caso de error se debe retornar, al igual que en los demás casos, un mensaje cuyo tipo sea != 200.

header("Status: 400 Bad request", false, 400);

Obtener el valor de la selección de un grupo de radiobuttons con Prototype

Suponendo que se tiene el siguiente formulario se requiere determinar cual es el valor seleccionado en el grupo de radiobuttons utilizando las facilidades que ofrece Prototype.

<form id='formulario'>
    <b>Código</b> <input type='radio' id='opc1' name='opciones' value='vCodigo' />
    <b>Nombre</b> <input type='radio' id='opc2' name='opciones' value='vNombre' />
    <b>Documento</b> <input type='radio' id='opc3' name='opciones' value='vDocumento' />
</form>

Desafortunadamente no es posible realizar lo siguiente ya que el radiobuttongroup no es una entidad como tal sino un agrupamiento de las mismas, mas aún, no se referencia por su id sino por su name, motivo por el cual no funcionará con el getElementById.

resultado = $('opciones').value;

Por suerte Prototype es muy flexible y encontré dos soluciones diferentes para este problema que me parecieron muy interesantes, ambas en una sola instrucción compuesta.

La primera utiliza la búsqueda por selector para obtener los radiobuttons del documento que se encuentren seleccionados y que pertenezcan al radiobuttongroup elegido para posteriormente utilizar el método pluck para extraerle su atributo value.

resultado = $$('input:checked[type="radio"][name="opciones"]').pluck('value');

La segunda optiene los radiobuttons de un radiobuttongroup específico accediendo directamente al formulario que los contiene para posteriormente utilizar el método find que retornará al primer elemento encontrado y que se encuentre seleccionado.

resultado = $('formulario').getInputs('radio','opciones').find(function(radio) { return radio.checked; }).value;

Enlaces.

Instalación de Aptana 1.2.1 en Linux Ubuntu 8.10

Introducción.

Los mismos problemas que tuve instalando Aptana en OpenSuse los tuve hoy con Ubuntu.  Ahora ya se como solucionarlos fácilmente.

En pocas palabras, Aptana requiere de XulRunner como dependencia, sin embargo no se la lleva bien con la versión 1.9 que es incluída por las distribuciones de Linux actuales y por ello es necesario instalar la versión 1.8.

Instalación de XulRunner 1.8.

Existen dos formas de instalar XulRunner, la automática utilizando la facilidad de apt-get o la manual.  Para instalar el paquete desde la linea de comando se debe ejecutar la siguiente instrucción.

$ sudo apt-get install xulrunner xulrunner-gnome-support

En caso de que haya problemas con ese método, siempre es posible descargar la última versión del archivo xulrunner_1.8.*+nobinonly-0ubuntu1_i386.deb de la siguiente ubicación.

http://packages.ubuntu.com/es/intrepid/xulrunner

Y ejecutar el siguiente comando para su instalación.

$ sudo dpkg -i xulrunner_1.8.*+nobinonly-0ubuntu1_i386.deb

Creación del script de inicio de Aptana.

Se crea el siguiente script para el inicio de Aptana. Por mi parte lo guardé como ~/Aptana/Aptana.sh.

#!/bin/sh
export MOZILLA_FIVE_HOME=/usr/lib/xulrunner
~/Aptana/AptanaStudio

Finalmente se le dan permisos de ejecución al script.

$ chmod +x ~/Aptana/Aptana.sh

Actualizar VirtualBox en OpenSuse 11.1

Extrañamente los repositorios que tengo en OpenSuse (los que venían por defecto) rara vez tienen versiones actualizadas del software, por eso he tenido que buscar nuevos repositorios para los paquetes que quiero actualizar.  Esto no me agrada, los repositorios estándar deberían mantenerse al día.

Desinstalación.

Casi siempre es conveniente desinstalar el software antigüo e instalar la nueva versión en lugar de sobreescribirlo.  VirtualBox parece ser el caso.

$ sudo zypper remove virtualbox virtualbox-ose-guest-tools virtualbox-ose-kmp-default virtualbox-ose-kmp-pae

Instalación.

Para actualizar VirtualBox, tenía la versión 2.0.6 OSE que había instalado inicialmente, se debe acceder al siguiente enlace desde Firefox.

http://software.opensuse.org/ymp/Virtualization:VirtualBox/openSUSE_11.1/virtualbox-ose.ymp

Reinciar el VirtualBox kernel module.

$ sudo /etc/init.d/vboxdrv setup

La versión con la que terminé después de la actualización fue la 2.1.2 OSE.

Otras formas de instalación.

Después de actualizado el repositorio la actualización puede hacerse con los siguientes pasos.

$ sudo zypper update

$ sudo zypper install virtualbox virtualbox-ose-guest-tools virtualbox-ose-kmp-default

De igual manera se debe reiniciar el VirtualBox kernel module como se indica en el procedimiento anterior.

Una tercera forma de instalación es la de obtener manualmente los paquetes (*.rpm) de la actualización desde el siguiente enlace e instalarlos con zypper install desde la línea de comando.

http://download.opensuse.org/repositories/Virtualization:/VirtualBox/openSUSE_11.1/i586/

Instalación de Gnome-Do en Linux OpenSuse 11.1

Igual a como lo hice en mi equipo de la casa con Ubuntu, hoy quise instalar Gnome-Do en mi estación de trabajo en la oficina donde utilizo OpenSuse.  La instalación se realiza a través de OneClick-Install por lo que sólo es necesario acceder a los siguientes enlaces para iniciar su proceso de instalación.

  1. http://software.opensuse.org/ymp/GNOME:Factory/openSUSE_11.1/gnome-do.ymp
  2. http://software.opensuse.org/ymp/GNOME:Factory/openSUSE_11.1/gnome-do-plugins.ymp

La configuración se puede realizar de la misma manera como se hizo con Ubuntu.

En Preferences > Appearance estaba obteniendo el siguiente mensaje e impedía que pudiera cambiar de tema.

Your display is not properly configured for theme and animation support. To use these features, your must enable compositing.

Para solucionar este problema se deben seguir los pasos siguientes.

  1. Presionar ALT+F2: abrir Run Application.
  2. Ejecutar la aplicación gconf-editor.
  3. Navegar por las ramas del árbol izquierdo: / > Apps > Metacity > General.
  4. En el panel derecho activar la casilla correspondiente a la llave compositing_manager.
  5. Seleccione File > Quit para terminar la configuración.

Está chévere esto de los enlaces para instalar fácilmente los paquetes, me recuerda a los WebStart de Java.

Según encontré, los archivos YMP son archivos XML con un contenido propuesto por SuSE para la estandarización de este servicio de instalación, incluye la metainformación del paquete, sus requerimientos y la información necesaria para instalarlo en diferentes plataformas.

Este es el contenido del archivo YMP utilizado para instalar Gnome-Do.

<metapackage xmlns:os="http://opensuse.org/Standards/One_Click_Install" xmlns="http://opensuse.org/Standards/One_Click_Install">
<group>
<repositories>
<repository recommended="true">
<name>Mono:Community</name>
<summary>Mono Community</summary>
<description>3rd party applications and libraries that run on Mono</description>
<url>http://download.opensuse.org/repositories/Mono:/Community/openSUSE_11.1/</url>
</repository>
<repository recommended="false">
<name>openSUSE:11.1</name>
<summary>The openSUSE 11.1 distribution</summary>
<description>The openSUSE 11.1 distribution rpm and iso file downloads are disabled by intention, please use our official released RCs from the download mirrors.
</description>
<url>http://download.opensuse.org/distribution/11.1/repo/oss/</url>
</repository>
</repositories>
<software>
<item>
<name>gnome-do</name>
<summary>A powerful, speedy, and sexy remote control for your GNOME Desktop</summary>
<description>GNOME Do allows you to quickly search for many objects present in your GNOME desktop environment (applications, Evolution contacts, Firefox bookmarks, files, artists and albums in Rhythmbox, Pidgin buddies) and perform commonly used commands on those objects (Run, Open, Email, Chat, Play, etc.).

GNOME Do is inspired by Quicksilver (http://quicksilver.blacktree.com) and GNOME Launch Box (http://developer.imendio.com/projects/gnome-launch-box).

Authors:
——–
David Siegel &lt;djsiegel@gmail.com&gt;
Richard Harding &lt;rharding@mitechie.com&gt;</description>
</item>
</software>
</group>
</metapackage>

Se ve que permite agregar dos nuevos repositorios a las fuentes, uno recomendado (seleccionado por defecto) y el otro no.  Además instala un paquete del único grupo definido: gnome-do.

Enlaces.

Instalación de los codecs multimedia en OpenSuse 11.1

OpenSuse por defecto no incluye ningún codec multimedia que permita manipular archivos con formatos patentados debido a conflictos con el licenciamiento.  Es decir, no es posible reproducir MP3 o reproducir DVDs.

Para mejorar esto se debe instalar el paquete de formatos restringidos lo cual se hace muy fácil ya que se realiza a través de OneClick-Install.  Se debe seguir uno de los siguientes enlaces según el manejador de ventanas del que se disponga.

Enlaces.

Instalación de Gnome-Do en Linux Ubuntu 8.10

Instalación.

$ sudo vi /etc/apt/sources.list

(agregar al final)

deb http://ppa.launchpad.net/do-core/ppa/ubuntu intrepid main
deb-src http://ppa.launchpad.net/do-core/ppa/ubuntu intrepid main

$ gpg –no-default-keyring –keyring /tmp/gnome-do.keyring –keyserver keyserver.ubuntu.com –recv A5D19FDCAA6ABB440CD3464628A8205077558DD0
$ gpg –no-default-keyring –keyring /tmp/gnome-do.keyring –export –armor A5D19FDCAA6ABB440CD3464628A8205077558DD0 | sudo apt-key add -
$ rm /tmp/gnome-do.keyring
$ sudo apt-get update
$ sudo apt-get install gnome-do gnome-do-plugins

Iniciar manualmente la aplicación (sólo por esta vez).

Elija la siguiente ruta en el menú del usuario.

Applications > Accessories > GNOME Do.

Configuración de la combinación de teclas para su inicio.

Haga un click derecho sobre el ícono iconognomedo ubicado en la barra de tareas, al lado del reloj o en la pestaña de opciones de la aplicación.  La combinación por defecto es [Super]+Espacio[Super] equivale a la tecla de la banderita en los teclado diseñados para Windows.

gnomedopreferences

Seleccione la opción Preferences.

changekeystroke

Seleccione la sección Keyboard y haga clic izquierdo sobre la opción Summon de la lista.

Presione la combinación de teclas que desee asignar para activar a Gnome-Do.

Configurar su inicio automático.

En las preferencias de Gnome-Do seleccione la sección General y active las siguientes casillas de verificación.

  1. Start GNOME Do at login.
  2. Hide Window on first launch (quiet mode).
  3. Show notification icon.

loadonboot

Presione el botón de Close para terminar la configuración.

Enlaces.

Instalación de Java 1.6 en OpenSuse 11.1

Esta mañana encontré que Aptana ya no estaba funcionando.  En sus logs aparecían excepciones extrañas.

eclipse.buildId=unknown
java.version=1.7.0
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=linux, ARCH=x86, WS=gtk, NL=en_US
Framework arguments:  Studio
Command-line arguments:  -os linux -ws gtk -arch x86 Studio

!ENTRY org.eclipse.equinox.common 4 0 2009-02-17 08:25:28.330
!MESSAGE FrameworkEvent.ERROR
!STACK 0
org.osgi.framework.BundleException: The bundle could not be resolved. Reason: Missing Constraint: Bundle-RequiredExecutionEnvironment: CDC-1.0/Foundation-1.0,J2SE-1.3
at org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:294)

Sin embargo algo llamó mi atención.  Al parecer el día de ayer se había actualizado el sistema operativo y había modificado el Java 1.6 que tenía anteriormente, instalándole una versión preliminar de Java 1.7 con Icedtea.

$ java -version

java version "1.7.0"
IcedTea Runtime Environment (build 1.7.0-b24)
IcedTea Server VM (build 1.7.0-b24, mixed mode)

Aparentemente esto no le gustaba a Aptana.  Tuve que regresar a Java 1.6 Sun.  Para hacer esto seguí los pasos a continuación.

  1. Iniciar YaST: System > System > YaST.
  2. De la sección [Software] elegir Software Repositories.
  3. Presionar el botón Add (+).
  4. Agregar el repositorio Java con el siguiente URL.
    http://download.opensuse.org/repositories/Java:/packages/openSUSE_11.1/
  5. Presionar el botón Ok para aceptar los cambios.
  6. De vuelta en YaST, de la sección [Software] elegir la opción Software Management.
  7. Buscar la cadena Java-1_6 del software Available.
  8. Seleccionar para instalar a los siguientes paquetes de java-1_6sun, sun-alsa, sun-devel, sun-jdbc, sun-plugin.
  9. Presione el botón Apply para ejecutar la instalación.

Finalmente la versión que tengo instalada es la 1.6.0_12 y Aptana ha vuelto a la vida.

$ java -version

java version "1.6.0_12"
Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
Java HotSpot(TM) Server VM (build 11.2-b01, mixed mode)

Enlaces.