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.

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);

Montar particiones remotas mediante SSH utilizando SSHFS bajo Linux

Otro goodie muy interesante que es posible realizar con la ayuda de SSH es la de montar particiones remotas mediante este protocolo, y por supuesto, de manera segura.  Con esto ya no necesito Samba para la mayoría de mis tareas diarias y es posible realizarlo a través de una red insegura como Internet.  En este caso la velocidad, disminuída por la encriptación, es la variable a tener en cuenta.

Estas son las cosas que me permiten hacer los sistemas operativos estilo *nix que me hacen sentir estar realmente utilizando un sistema operativo de verdad y no el de una consola de videojuegos.  Cómo se haría esto en Windows ?  No tengo la menor idea, sin embargo no se me había ocurrido investigar y está tan interesante la idea que voy a experimentar un poco al respecto.

A continuación se relacionan los pasos necesarios para montar un  sistema de archivos remoto mediante la utilización de SSH.

Instalación del módulo fuse.

Las distribuciones modernas incluyen por defecto a este módulo, sin embargo si no se cuenta con él se puede instalar de la distribución nativa.  Para instalarlo en OpenSuse 11.1 se debe ejecutar el siguiente comando.

$ zypper install fuse

Requisitos del usuario local.

El usuario local que va a realizar la conexión debe pertenecer al grupo fuse para poder utilizar este módulo del Kernel para hacer el montaje.  Este paso no fue necesario en mi estación de trabajo con OpenSuse 11.1, sin embargo entiendo que en algunas otras distribuciones es necesario.

$ sudo usermod -G fuse -a usuario_local

Después de incluír al usuario en el grupo es necesario cerrar sesión y volver a ingresar a la cuenta para que los cambios sean tenidos en cuenta.

Cargar el módulo de fuse en memoria.

Es posible realizar la carga del módulo de dos maneras: desde la línea de comando que permite incluírlo temporalmente, es decir, es necesario hacerlo cada vez que se inicia la máquina o configurando al sistema operativo para que lo cargue automáticamente durante su inicio, con esto se garantiza que siempre se encuentre disponible.

Carga temporal del módulo fuse.

$ sudo /sbin/modprobe fuse

Carga regular del módulo fuse.

En la mayoría de Linux esta actividad se realiza ejecutando el siguiente comando.

$ sudo sh -c “echo fuse >> /etc/modules”

Para OpenSuse 11.1 encontré que se debe realizar un procedimiento diferente.

  1. $ sudo vi /etc/sysconfig/kernel
  2. Ubicar la sección MODULES_LOADED_ON_BOOT.
  3. Agregar la palabra fuse entre las comillas.  Si existen mas módulos, estos se separan con espacios.
  4. Ejecutar el siguiente comando para cargar inmediatamente los módulos especificados.$ /etc/init.d/boot.loadmodules restart

Instalar SSHFS.

SSHFS es la parte del proyecto Fuse que nos permite la mágia de realizar el montaje del sistema de archivos remoto.  Para instalar este paquete en OpenSuse 11.1 se ejecuta el siguiente comando.

$ sudo zypper install sshfs

En Ubuntu 8.x es necesario ejecutar el siguiente comando.

$ sudo apt-get install sshfs

Realizar el montaje.

De manera similar a la carga del módulo, el montaje se puede realizar de dos maneras: temporal (sólo para la sesión) o permanente (cada vez que se inicie el sistema operativo).

Montaje temporal.

$ sshfs usuario@servidor:/directorio_remoto /directorio_local

Montaje permanente.

$ sudo vi /etc/fstab

sshfs#usuario@servidor:directorio_remoto  directorio_local    fuse    defaults,noauto

Mantener viva la conexión.

Esta modificación hace que se envíen paquentes con una mayor frecuencia cuando se deje de transmitir información por un tiempo prolongado entre cliente y servidor con el fin de evitar que la conexión finalice (timeout) manteniéndola viva.

$ vi /etc/ssh/ssh_config

ServerAliveInterval  120

Desmontar sistemas de archivos montados con sshfs.

$ fusermount -u directorio_local

Si el sistema de archivos fue montado mediante el segundo método: montaje permanente, este puede ser desmontado normalmente con el comando umount.

Montar un recurso compartido Windows desde Linux

Esta es una actividad extremadamente sencilla, sin embargo me es útil documentarla ya que acostumbra a olvidárseme, especial desde el cambio del tipo de formato smbfs a cifs.

El panorama es claro, del lado del servidor tenemos una máquina Windows (u otro sistema operativo con Samba) con una carpeta compartida.  Del lado del cliente tenemos un equipo con Linux y la distribución -cliente- de Samba instalada.  Se desea montar en la carpeta web del cliente el recurso compartido shared del servidor, utilizando los privilegios del usuario user.

Este procedimiento requiere que se tenga instalado el paquete smbfs en el cliente el cual se puede instalar de la siguiente manera.

$ sudo aptitude install smbf

Para implementar el montaje de la partición remota realizamos los siguientes pasos.

  1. Crear la carpeta /web.  Este paso depende de sus necesidades.$ sudo mkdir /web
    $ sudo chmod 777 /web

  2. Realizar el montaje del recurso compartido.$ sudo mount -t cifs -o user=user //servidor/shared /web