viernes, 5 de abril de 2013

Buscar dominios Whois JAVA


WHOIS JAVA

Para este caso utilizo socket para lograr la busqueda de dominios disponibles en la web a un puerto 43.

Primero se debe conocer el whois publico EJ: whois.internic.net para dominios .net .com .edu
ahora hay que abrir un socket con el puerto 43.
Ejemplo: 

Socket s = new Socket("whois.internic.net", 43);

y se lo lee mediante un outputStream y un bucle

OutputStream os = s.getOutputStream();

Ahora les pongo el método completo para hacer el whois.internic.net 



martes, 2 de octubre de 2012

Instalacion de JADE

Como Instalar JADE


En primer lugar nos descargamos los ficheros jadeBin.zip y jadeExamples.zip. Ambos ficheros se pueden encontrar en la página principal de JADE. 
Copiamos los archivos descargados en una carpeta en C:\jade
A continuación cambiamos la variable CLASSPATH para incluir los ficheros .jar en el subdirectorio lib y el directorio actual. El comando sería:
set CLASSPATH=%CLASSPATH%;.;c:\jade\lib\jade.jar;c:\jade\lib\jadeTools.jar;c:\jade\lib\Base64.jar; c:\jade\lib\iiop.jar
Para arrancar la RMA y probar así que su instalación es correcta podemos ejecutar el siguiente comando:
java jade.Boot -gui
Veremos cómo nos aparece una consola (agente RMA) a partir de la cual podemos crear agentes y enviar mensajes entre ellos.
Dentro de la librería jade/src/examples podemos encontrar una serie de ejemplo escritos en Java, que son agentes que también se pueden ejecutar desde la línea de comandos. Para ejecutar unos de estos ejemplos nos tenemos que situar en el directorio jade/src y referirnos a los agentes con el nombre completo del paquete. Todos los ejemplos están situados en subpaquetes del paquete 'examples', por ejemplo la claseComplexBehaviourAgent en el subdirectorio 'behaviours' del directorio 'examples' debe ser arrancada desde el directorio jade/src con el comando:
java jade.Boot -platform a1:examples.behaviours.ComplexBehaviourAgent
Si además de lanzar dicho ejemplo queremos también lanzar el agente RMA añadiríamos al comando anterior la opción -gui:
java jade.Boot -gui -platform a1:examples.behaviours.ComplexBehaviourAgent

miércoles, 11 de mayo de 2011

Weka with Data Mining done in java

Utilizando la libreria de weka.jar, la pueden descargar en Pagina Oficial Weka



Weka es un software programado en Java que está orientado a la extracción de conocimientos desde bases de datos con grandes cantidades de información, se tiene mucho algoritmos echos para Redes Neuronales, Minería de Datos, Problemas de Clasificación, Redes Bayesianas, entre otras...

En este caso voy a poner el código de un ejemplo donde utilizo la librería weka.jar llamada desde JAVA

En este caso utilizo 5 algoritmos que son usados para clasificación: Ridor, ZeroR, PART, NNge, M5Rules

CODIGO:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wekadatamining;
/**
 *
 * @a{
            DataSource ar = new DataSource(ruta);
            coleccion = ar.getDataSet();
            coleccion.setClassIndex(coleccion.numAttributes() - 1);
            //presentar la coleccion s.Evaluation;
import weka.classifiers.rules.M5Rules;
import weka.classifiers.rules.NNge;
import weka.classifiers.rules.PART;
import weka.classifiers.rules.Ridor;
import weka.classifiers.rules.ZeroR;
import weka.core.Debug.Random;
import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;

public class Algoritmos {
    //variable de resultados
    String resultado = "\n";
    //variable de datos del archivo xxxx.arff
    String datosarchivo = "\n";
    //variable de la ruta del archivo
    String ruta;
    //variable de las Instances del archivo
    Instances coleccion;
    //variable del fold del cross-validation
    int crossValidation;
    //variable de tipo de evaluacion
    int tipo;
    public int getTipo() {
        return tipo;
    }
    public void setTipo(int tipo) {
        this.tipo = tipo;
    }
    public int getCrossValidation() {
        return crossValidation;
    }
    public void setCrossValidation(int crossValidation) {
        this.crossValidation = crossValidation;
    }
    public Algoritmos(String ruta) {
        this.ruta = ruta;
    }
    //Conjunto de datos del archivo .arrf
    public String datos() {
        try ;
        } catch (Exception exception) {
            resultado = exception.toString();
            mostrarMsj();
        }
        return resultado;
    }
//algoritmo Part
    public String ejede entrenamiento
            datosarchivo = datosarchivo + "\nColeccion de entrenamiento:\n";
            datosarchivo = datosarchivo + coleccion.toString();
        } catch (Exception ex) {
            datosarchivo = ex.toString();
        }
        return datosarchivo;
    }
//algoritmo RIDOR
    public String ejecutarRidor() {
        resultado = "\n";
        Ridor ridor = new Ridor();
        try {
            //Construyendo el clasificador
            ridor.buildClassifier(coleccion);
            //llama al metodo para obtener la matrixConfusion
            String matrix = matrixConfusion(ridor);
            resultado = resultado + ridor.toString();
            resultado = resultado + matrix;
        } catch (Exception exception) {
            resultado = exception.toString();
            mostrarMsj();
        }
        return resultado;
    }
//algoritmo ZeroR
    public String ejecutarZeroR() {
        resultado = "\n";
        ZeroR zeror = new ZeroR();
        try {
            zeror.buildClassifier(coleccion);
            String matrix = matrixConfusion(zeror);
            resultado = resultado + zeror.toString();
            resultado = resultado + matrixm5rules.toString();
            resultado = resultado + matrix;
        } catch (Exception exception) {
            resultado = exception.toString();
            mostrarMsj();
        }
        recutarPart() {
        resultado = "\n";
        PART part = new PART();
        try {
            part.buildClassifier(coleccion);
            String matrix = matrixConfusion(part);
            resultado = resultado + part.toString();
            resultado = resultado + matrix;
        } catch (Exception exception) {
            resultado = exception.toString();
            mostrarMsj();
        }
        return resultado;
    }
//algoritmo NNge
    public String ejecutarNNge() {
        resultado = "\n";
        NNge nnge = new NNge();
        try {
            nnge.buildClassifier(coleccion);
            String matrix = matrixConfusion(nnge);
            resultado = resultado + nnge.toString();
            resultado = resultado + matrix;
        } catch (Exception exception) {

            resultado = exception.toString();
            mostrarMsj();
        }
        return resultado;
    }
//algoritmo M5Rules
    public String ejecutarM5Rules() {
        resultado = "\n";
        M5Rules m5rules = new M5Rules();
        try {
            m5rules.buildClassifier(coleccion);
            String matrix = matrixConfusion(m5rules);
            resultado = resultado + m5rules.toString();
            resultado = resultado + matrix;
        } catch (Exception exception) {
            resultado = exception.toString();
            mostrarMsj();
        }
        return resultado;
    }
    public void mostrarMsj() {
        JOptionPane.showMessageDialog(null, "Trate de ejecutar con otro algoritmo", "Error", JOptionPane.ERROR_MESSAGE);
    }
//Metodo para matrixConfusion
    public String matrixConfusion(Classifier classifier) {
        String matrix = "\n";
        //Modelo de Test
        Evaluation eTest;
        try {
            eTest = new Evaluation(coleccion);
            // es 1 si utiliza cross validation caso contrario utiliza todo
            // el conjungo de datos para evaluar el modelo
            if (tipo != 1) {
                Random rand = new Random(1);
                //los FOLDS para cross-validation
                int folds = getCrossValidation();
                //llamando al metodo cross-validation
                eTest.crossValidateModel(classifier, coleccion, folds, rand);
            } else {
                eTest.evaluateModel(classifier, coleccion);
            }
            //Muestra el resumen de la evaluacion
            String strSummary = eTest.toSummaryString();
            matrix = matrix + " ===== SUMARY =====\n" + strSummary;
            // obtener confusion matrix
            matrix = matrix + eTest.toMatrixString();
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, ex.toString(), "ERROR", JOptionPane.ERROR_MESSAGE);
        }
        return matrix;
    }
}

En uno de los métodos se está obteniendo la matriz de Confusión (CONFUSION MATRIX), una de las partes muy importantes al momento de clasificar.

Y también algo importante es la obtención de las reglas de decisión (el conocimiento extraído de la BD para tomar decisiones).

Tendrán que ejecutarlo para que puedan ver los resultados, son diferentes algoritmos para que se pueda utilizar el mejor.

La aplicación que hice fue muy pequeña, pero lo importante es que funciona y se pueden ver los resultados del clasificador.



A los que les interesa el tema y si quieres todo el sistema completo esta aquí DataMining pesa 5.6MB subido en MediaFire

Fuentes:

http://www.cs.waikato.ac.nz/ml/weka/

http://rp-www.cs.usyd.edu.au/~sakshib/Weka/

viernes, 3 de diciembre de 2010

J2ME+APACHE+JSP+MySQL

Bueno aca les dejo una aplicación con J2ME, lo que hago es conectar una aplicación móvil mediante un servlets que este se coneta a MySQL, y una pequeña  pagina JSP... por cierto todo esta en NetBeans, es algo muy sencillo, luego estaré subiendo todo un sistema Midlet completo.

Acá el código

copyright

BD:

GRANT ALL PRIVILEGES ON servidorlaptop.* TO 'TuUser'@'localhost' IDENTIFIED BY 'TuPass' WITH GRANT OPTION;

JSP:

<%--     Document   : index    Created on : 29/11/2010, 10:04:46 PM

Author     : Henry Paz --%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>JSP Page</title>

</head>

<body>

<form action="HelloServlets" method="POST">

Ingrese su nombre: <input type="text" name="nombre" value="" size="45" />

Ingrese su password: <input type="text" name="pass" value="" size="45" />

<input type="submit" value="Enviar" name="enviar" />

</form>

</body>

</html>

 

SERVLETS:

//supongo que ya saben como cargar los Servlet, pero el nombre de la clase es: HelloServlets extends HttpServlet

protected void processRequest(HttpServletRequest request, HttpServletResponse response)  throws ServletException, IOException {

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

String usuario = request.getParameter("nombre");

String clave = request.getParameter("pass");

String respuesta = "";
try {

Class.forName("com.mysql.jdbc.Driver");

Connection conexion = DriverManager.getConnection("jdbc:mysql://" +

"localhost:3306/ServidorLaptop", "root", "root");

Statement sentencia = conexion.createStatement();

ResultSet rs = sentencia.executeQuery("SELECT idUser FROM " +

"user WHERE User='" + usuario + "' AND password='" + clave + "'");
rs.last();

if (rs.getRow() == 0) {

respuesta = "0";

} else {

respuesta = String.valueOf(rs.getInt(1));

}

conexion.close();

sentencia.close();

} catch (Throwable t) {

out.println("Error. " + t.toString()); //mensaje = "Error. " + t.toString();
} finally {

out.println(respuesta);

out.close();
}

MIDLET:

Bueno se puede correr con ToolKit para celulares, y por cierto para hacer correr desde el celular y conectarse con la laptop se tiene que configurar la red.

http://www.4shared.com/file/_tfbtGy-/Coneccion.html

http://www.4shared.com/file/lMXDyVVV/Coneccion.html

 

copyright