Archive for June, 2009

  • Consejo para java IO

    0

    Flushing Streams

    Parece ser obvio lo que digo acá, pero repetidamente tenemos situaciones donde nos olvidamos de hacer esto y luego pagamos las consecuencias. El típico problema es que hay 2 programas comunicándose a través de la network, el primero le habla al segundo, el segundo le contesta pero como no hizo un flush el primero nunca se entera de la respuesta.

    Simplemente hagan flush() en un stream despues de haber escrito en él.

    OutputStream out;
    byte[] data
    out.write(data);
    out.flush();

    Si están escribiendo texto, es bueno utilizar un PrintWriter para output. Esta clase tiene un constructor que deja hacer flush cada vez que escribimos en él.

    PrintWriter writer = new PrintWriter(out, true);
    writer.writeLine("some text"); 

    Con ésta utilidad nos evitamos hacer flush cada vez que escribimos.

  • Buscar Imagenes Dentro De Un Jar

    0

    Cuando hacemos deploy de nuestras aplicaciones Java queremos distribuir generalmente la menor cantidad de archivos individuales. Para eso, distribuir tu aplicación como un Jar file es lo más conveniente. El tema llega a la hora de referenciar a recursos e imágenes dentro del Jar. Aca veremos como solucionar éste tema.

    Hay que utilizar getResourceAsStream() para que nuestro código sea portable en vez de utilizar esta vieja técnica:

    InputStream in = new FileInputStream("images/image.png");

    Cuando corre éste código explota básicamente porque sigue buscando el recurso dentro del filesystem y no dentro del Jar.

    El modo correcto de encarar éste llamado es:

    InputStream in = this.getClass().getResourceAsStream("images/image.png");

    Esta porción de código busca images/image.png de modo relativo  a la locación de la clase referenciada y también funciona perfectamente con recursos dentro de un Jar file.

  • Como Conectarse A Oracle Desde C#

    0

    Bueno, finalmente me tuve que meter con unas cosas en C# para generar una DLL que interactue con un sistema legacy de telefonos. Aca vamos a mostrar como conectarse a Oracle desde  un programa C#.

    Primero que nada tenemos que tener instaladas las librerias de ODBC y esas las conseguimos aca http://www.microsoft.com/downloads/details.aspx?familyid=6ccd8427-1017-4f33-a062-d165078e32b1.

    Una vez instaladas hay que generar un ODBC Driver para oracle y supongo que eso ya lo saben y si no, aca hay un tutorial.

    Ya hecha la entrada del data source podemos ir al código C#.

    Declaramos la referencia a ODBC de esta manera:

    using Microsoft.Data.Odbc;

    Nos conectamos al ORACLE:

    OdbcConnection myConn = new OdbcConnection("DSN=MYDNS;UID=MYUID;PWD=mypass;");
    myConn.Open();

    Ejecutamos un query:

    String mySql = "select 1 from dual";
    OdbcCommand myCmd = new OdbcCommand(mySql, myConn);
    OdbcDataReader myReader = myCmd.ExecuteReader();

    Y finalmente leemos el reader:

    while (myReader.Read()) {
      Console.WriteLine(myReader.GetString(0));
    }

    Asi de sencillo. En el próximo artículo veremos como hacerlo con un SQL Server.

  • Como Ejecutar Un Jar File

    0

    Para ejecutar un jar file (generalmente la instalación de windows asocia los jar con java.exe) es necesario un condimento especial a un archivo de META información en el mismo.

    Desde la línea de comando veríamos algo asi:

    java -jar MyStuff.jar

    O si tenemos asociado el jar con java directamente, solo un doble click basta para ejecutar nuestra apliacación.

    Para esto necesitamos tener empaquetado en nuestro jar un directorio en el root llamado META-INF y un archivo de texto debajo llamado MANIFEST.MF

    El archivo MANIFEST.MF debe tener una propiedad y un valor, el valor es tu clase con el método MAIN. Sería asi..

    Main-Class: com.rodrigo.HelloWorld

    Solo con eso ya tenemos un Jar ejecutable.