Regalé un proyecto: “Timba”

Tenia este proyecto dormido en su version 0.0.31 en sourceforge desde hace mas de 2 años, asi que se lo regale a un grupillo de investigacion del LIS de UTN-FRC (Pronósticos).

Timba es un bichito hecho cn java, el cual uno le carga una imagen y seleccionando un color  infiere por metodo de montecarlo, la superficie que ocupa el color en la imagen.

Lo usé para calcular superficies de lagos y alguna que otra mancha de cancer de piel.

[slideshow]

En una de las imagenes se ve que el programa detecta las islas de un mapa en color rojo.

Link del proyecto

Leer Más

Snippet: LinearLeastSquares pero para java

Y me dio ganas de hacerlo para java

Uso:

double[] xs = {1, 2, 3, 4, 5};
double[] ys = {1, 4, 9, 16, 25};
interpolador = new LinearLeastSquares(xs, ys);
interpolador.interpolate(1);

El Código

public class LinearLeastSquare {

    private double m;
    private double b;

    /**
     * Creates an interpolator function with "Linear Least Square" method.
     *
     * @see http://en.wikipedia.org/wiki/Linear_least_squares_(mathematics)
     * @param xs: array with x's values (same lenght as ys)
     * @param xs: array with y's values (same lenght as xs)
     *
     * @author Juan BC
     * @licence gpl3
     * @date 2011/01/05
     *
     */
    public LinearLeastSquare(double[] xs, double[] ys) {
        if (xs.length != ys.length) {
            throw new IndexOutOfBoundsException("'xs' and 'ys' must have same lenght");
        }
        double n = xs.length;
        double sum_xy = 0;
        double sum_x = 0;
        double sum_y = 0;
        double sum_x_sq = 0;
        for (int i = 0; i < xs.length; i++) {
            sum_xy += xs[i] * ys[i];
            sum_x += xs[i];
            sum_y += ys[i];
            sum_x_sq += xs[i] * xs[i];
        }

        this.m = (n * sum_xy - sum_x * sum_y) / (n * sum_x_sq - sum_x * sum_x);
        this.b = (sum_y - this.m * sum_x) / n;
    }

    /**
     * Return the interpolation of x
     * @param x
     */
    public double interpolate(double x) {
        return this.b + this.m * x;
    }
}

Disclaimer: Solo lo probé con el conjunto de datos que hay en Wikipedia.

Leer Más

Me gusta el patron MonoState

public class MonoState{
    private static int state;

    public int getState(){
       return Monostate.state;
    }

    public void setState(int state){
       Monostate.state =  state;
    }
}
Monostate i1 = new MonoState();
Monostate i2 = new MonoState();

System.out.println(i1.getState); # print 0
System.out.println(i2.getState); # print 0

i1.setState(2);

System.out.println(i1.getState); # print 2
System.out.println(i2.getState); # print 2

Leer Más

Un aporte a “Google translate api”

He estado usando el google tranlate api, para traducir de un lenguaje a otro. El pequeño problema es que no soporta todas las combinaciones como por ejemplo “Japones a Español”.

Mi solución, hacer una clase que cuando captura una excepción utilice otro lenguaje pasado por parámetro como intermedio; así el “Japones a Español” cambiaría a la forma “Japones a <otro lenguaje> a Español”. Además agregue un método que directamente utiliza el inglés como lenguaje intermedio (“Japones a Ingles a español”).

Para utilizar estos métodos es necesario primero importar el api de google ya que el código para identificar idiomas que utiliza es el brindado por la clase “Languages” de ese paquete.

mi código (Licenciado bajo la GPL v3)

/*
* GoogleConnection.java
*
* Copyright (C) – 27 de noviembre de 2007, 18:18 – juan b cabral
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*
* this is the code use to tranlate from one language to another when the combination is not soported.
* for example, if I need to translate “from Spanish to Japanese”
* this code will first try to do it directly, and when it gets an exception,will first try to use na intermediate
* language (usually english which is the
* most supported) and after trying with the intermediate language will try with Japanese.
*
*/

import com.google.api.translate.*;

/**
*
* @author Juan B Cabral
* @version 1.0
*/
public class GoogleConnection{

/**
* use as intermediate Language.ENGLISH
* @param String str
* @param String from
* @param String to
*/
public static String translateEnglishIntermediate(String str, String from, String to) throws java.net.MalformedURLException, java.io.IOException {
return getTranslation(str, from,to, Language.ENGLISH);
}

/**
* Try to translate directly the String from “from” language to “to” language
* or first translate from “from language” to “inter” (intermediate) language, and from “inter” language to “to” language
* @param String str
* @param String from
* @param String to
* @param String inter
*/
public static String getTranslation(String str, String from, String to, String inter) throws java.net.MalformedURLException, java.io.IOException{
try{
str=Translate.translate(str,from,to);
}catch(Exception e){
try{
str=Translate.translate(str,from,inter);
str=Translate.translate(str,inter, to);
}catch(Exception e2){
throw e2;
}

}
return str;
}

}

Leer Más

Probando Netbean 6.0 Rc2

Netbeans 6rc2

Anda mal, anda lento… sus plugins por defecto te chupan todo el ram… tuve que sacar glassfish y el editor de webpages.

Pero es un buen avance… todavía encuentro mejor solucion para uml en Umbrello y para diseño web en Kompozer. Eso sí, tener C/C++ en netbeans me gusto mucho.

A esperar Netbeans 6.0 Version Final

Leer Más