RSS

Archivo del Autor: yonatan90grajeda

JUnit

Junit es utilizado para realizar pruebas unitarias en aplicaciones java, esto es un framework que permite realizar la ejecución de clases java de manera controlada, con la finalidad de evaluar el funcionamiento de cada uno de los métodos de la clases esto para ver si se comportan como se esperan. Junit viene en Netbeans y en Eclipse por lo tanto las pruebas se realizaran más fácilmente que tener que descargar el jar de Junit estar configurando el classpath etc. Y teniendo Netbeans un plugin para que realice las pruebas de una clase de manera automática haciendo que el programador solo se enfoque en las pruebas y resultados esperados.

Junit permite timeouts en los test, comparación de arrayas con assertArrayEquals, configurar excepciones esperadas, ordenación, priorización,  categorización y filtrado de text entre muchas más.

Método assert() de JUnit Qué verifica
assertTrue(expresión) Comprueba que expresión evalúe a true
assertFalse(expresión) Comprueba que expresión evalúe a false
assertEquals(esperado,real) Comprueba que esperado sea igual a real
assertNull(objeto) Comprueba que objeto sea null
assertNotNull(objeto) Comprueba que objeto no sea null
assertSame(objeto_esperado,objeto_real) Comprueba que objeto_esperado y objeto_real sean el mismo objeto
assertNotSame(objeto_esperado,objeto_real) Comprueba que objeto_esperado no sea el mismo objeto que objeto_real
fail() Hace que el test termine con fallo
assertArrayEquals()  Comprueba que dos arrays sean iguales
assertThat() Comprueba que satisface real la condición especificada en Matcher.

Testcase: Un testcase se define para ejecutar múltiples pruebas. Para definir un testcase se implementa una subclase de TestCase, se definen las variables de instancia que almacenan el estado del aparato, inicializar el estado accesorio primordial el programa de instalación setUp(), limpieza después de una prueba primordial por tearDown(). Cada prueba se ejecuta en su propio accesorio para que pueda haber efectos secundarios entre las ejecuciones de pruebas.

Testsuite: Un testsuite es una composición de pruebas. Puede extraer las pruebas que se ejecutan automáticamente, para ello se pasan a la clase del TestCase a la clase del constructor de testsuite.

TestSuite suite= new TestSuite();

suite.addTest(new MathTest(«testAdd»));

suite.addTest(new MathTest(«testDivideByZero»));

o la segunda alternativa:

TestSuite suite= new TestSuite(MathTest.class);

 
Deja un comentario

Publicado por en diciembre 21, 2011 en Java

 

Comando grep en linux

Cuando se necesita realizar busqueda dentro de archivos el comando a utilizar en la shell de linux es grep, este comando hace una busqueda de palabras dentro del archivos por si a uno se le olvido el nombre del archivo pero sabe que contenido tiene o por ejemplo si se esta estudiando el codigo de una aplicacion que no es de uno y no se logra encontrar en que clase o archivo esta un metodo o algo por el estilo este comando es el mejor para esta situación.

La sintaxis es la siguiente, suponiéndose que se encuentra dentro de la direccion /home/softwaredevelopment  y se quiere buscar el archivo que contiene la frase «GNU/LINUX comandos»

grep -ri «GNU/LINUX comandos» /home/softwaredevelopment/*

r ->  que la busqueda que hara sera recursiva es decir buscara en las subcarpetas

i -> omitira mayusculas y minusculas.

/home/softwaredevelopment/* -> el * indicar que hara una busqueda en toda la carpeta

 
Deja un comentario

Publicado por en septiembre 16, 2011 en GNU/Linux

 

Etiquetas:

Abrir un documento desde Java

Si deseamos abrir un archivo con java bastara con colocar el siguiente método es decir si por ejemplo se desea abrir un archivo pdf con darle clic a un botón se coloca el siguiente código dentro del botón y este abrirá ya sea Acrobat Reader o la aplicación que tengamos por defecto para abrir el pdf

 

    public void abrirArchivo()
    {
        
    try{
		File path = new File("C:\miarchivo.pdf");
		Desktop.getDesktop().open(path);
    	}catch(IOException e){
    		e.printStackTrace();
    		System.out.println("Ruta erronea");
    	}
    }
 
Deja un comentario

Publicado por en agosto 15, 2011 en Java

 

Escribir un archivo en Java

El siguiente código realizado en java muestra como escribir un archivo en formato html el formato es independiente ya que la forma en que se escribirá un archivo de cualquier tipo es la misma.

FileWriter: es para abrir y poder esscribir archivos se asocia con el objeto File.

PrintWriter: Es para poder escribir sobre el archivo.

Try: Tratara de hacer el código dentro de el si surge un error se ir a la parte de catch.

catch: Entrara a esta parte si a la hora de escribir o abrir el archivo hay un error como ejemplo si el archivo no existe o no se tenga privilegios para escribir en el archivo.

Finally: Esta parte siempre la hará.

Para realizar esto se necesita importar la siguiente libreria

import java.io.*;

    public void EscribirHtml(){
    FileWriter html=null;
    PrintWriter pw=null;

    try
    {
        html=new FileWriter("bitacora.html");
        pw=new PrintWriter(html);

        pw.println("<html>");
        pw.println("<body bgcolor=black>");
        pw.println("<head>");
        pw.println("<title>");
        pw.println("Bitacora de canciones / Videos Reproducidos");
        pw.println("</title>");
        pw.println("</head>");
        pw.println("<font color=white size=+5, face=bell MT>");
        pw.println("<h1 align=center>Canciones/ Videos Reproducidos</h1>");
        pw.println("<hr width =100% color=White>");
        pw.println("</font>");
        pw.println("<br>");
        pw.println("<br>");
        pw.println("<font color=white size=+2,face=bell MT>");
        pw.println("Video Reproducido");
        pw.println("</font>");
        pw.println("</html>");
        pw.println("</body>");
    }
     catch(Exception e){
        e.printStackTrace();

     }
     finally
     {
        try
        {
            if(null!=html)
                html.close();
        }

     catch(Exception e2)
     {
        e2.printStackTrace();
     }
    }
    }
 
Deja un comentario

Publicado por en agosto 15, 2011 en Java

 

IPV6

IPv6 quiere decir Protocolo de internet versión 6 fue creado para reemplazar IPv4 esto debido a que IPv4 no tiene la capacidad de soportar tanta demanda por lo tanto IPv6 tiene la capacidad para soportar toda la demanda del mercado. La capacidad de IPv4 es de 2^32 direcciones y uno se puede preguntar por qué crearon algo de ese tamaño es decir de un tamaño bastante limitado si se compara con la demanda actual de internet lo que paso es que IP4 casi como un experimento, no pensaron que pudiera tener tanto éxito comercial. Por lo tanto ahorita se están acabando las direcciones y por este motivo se creó y se estuvo experimentando con IPv6 en todo este tiempo también así el protocolo IPv6, dispone de 340 billones de billones de billones (sextillones) de direcciones. Esto debido a que pose direcciones con una longitud de 128 bits o en otro modo 340 sextillones. Esto no quiere decir que desaparecerá IPv4 bueno tal vez con el tiempo pueda ser muy posible pero IPv6 coexistirá con IPv4 esto debido a que muchas empresas trabajan con este protocolo y el cambio de toda su infraestructura y todo puede ser demasiado caro entonces IPv6 coexistirá con IPv4.

Dentro de los cambios de IPv4 a IPv6 es que esta última especifica un nuevo formato de paquetes, diseñado para minimizar el procesamiento del encabezado de paquetes. Debido a que las cabeceras de los paquetes estos son significativamente distintas, los dos protocolos no son interoperables. También así como ya se mencionó la capacidad de direccionamiento es mucho mayor que en IPv4 y el tamaño de la subred en IPv6 es de 2^64 el cuadrado del tamaño de la internet IPv4 entera con esto la tasa de utilización de espacio de direcciones será probablemnte menos en IPv6, pero la administración de las redes y el ruteo serán mas eficientes debido a las decisiones de diseño inherentes al mayor tamaño de las subredes y la agregación jerárquica de rutas.

La habilidad para enviar paquetes únicos a destinos múltiples (Multicast) es parte de las especificaciones de IPv6 mientras que en IPv4 es opcional. Esto debido a que la primera mencionada no hace uso de broadcast ya que pueden lograr lo mismo con multicast así que el broadcast de IPv4 es considerado una dirección normal en IPv6.

IPv6 tiene la capacidad de ser autoconfigurable es decir pueden configurarse a si mismos automáticamente cuando son conectados a una red ruteada en IPv6 a esto es comúnmente llamado una autoconfiguración de direcciones libres de estado. Si la autoconfiguración de direcciones libre de estado no es adecuada para una aplicación, es posible utilizar DHCPPv6 es un DHCP para ipv6 o se puede configurar de forma estática. Algo que cabe notar la seguridad de nivel de red con un protocolo IPsec es un protocolo para cifrado y autenticación IP esta en IPv6 en IPv4 este protocolo es opcional pero comúnmente implementado. Esta y muchas más diferencias hay entre IPv4 con IPv6.

La notación para las direcciones IPv6 estas direcciones se escriben como 8 grupos de cuatro dígitos hexadecimales.

2008:0db8:1881:8a2e:4564: 08d3:1111:3afa

Si por ejemplo si se tuviera un grupo de 4 dígitos todos 0 es decir 0000 se puede comprimir es decir si existiera 0987:0000:454B se pude poner 0987::454B se realizara un ejemplo mas real 2008:1881:2881:8a2e:0000:08d3:0000:3afa-> 2008:1881:2881:8a2e::08d3::3afa

Identificación de tipos de direcciones:

::

La dirección con todo ceros se utiliza para indicar la ausencia de dirección, y no se asigna ningún nodo. ::1 La dirección de loopback es una dirección que puede usar un nodo para enviarse paquetes a sí mismo (corresponde con 127.0.0.1 de IPv4). No puede asignarse a ninguna interfaz física.

::1.2.3.4

La dirección IPv4 compatible se usa como un mecanismo de transición en las redes duales IPv4/IPv6. Es un mecanismo que no se usa.

::ffff:0:0

La dirección IPv4 mapeada se usa como mecanismo de transición en terminales duales.

fe80::

El prefijo de enlace local (en inglés link local) específica que la dirección sólo es válida en el enlace físico local.

fec0::

El prefijo de emplazamiento específico que la dirección sólo es válida dentro de una organización local.

ff00::

El prefijo de multicast. Se usa para las direcciones multicast.

Relación de estándares más importante de IPv6 se pueden encontrar:

• RFC1981 – Path MTU Discovery for IP version 6

• RFC2460 – Internet Protocol, Version 6 (IPv6) Specification

• RFC2461 – Neighbor Discovery for IP Version 6 (IPv6)

• RFC2462 – IPv6 Stateless Address Autoconfiguration

• RFC4291 – IP Version 6 Addressing Architecture

• RFC4443 – Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 • (IPv6) Specification

 
Deja un comentario

Publicado por en agosto 15, 2011 en Redes

 

Conexion PHP con Mysql Usando Clases

Buen día en esta ocasión se pretende realizar una conexión sencilla de php con mysql pero no sera como se muestra en otros tutoriales se manejaran clases para optimizar mejor nuestro código y hacerlo mas modular. Para esto se deberá de crear un archivo en conexionphp.php y agregarle el codigo siguiente:

<?php
class DBManager{
	var $conect;

	var $BaseDatos;
	var $Servidor;
	var $Usuario;
	var $Clave;
	function DBManager(){
		$this->BaseDatos = "name_BD";
		$this->Servidor="localhost";
		$this->Usuario = "user";
		$this->Clave = "pass";
	}

	 function conectar() {
		if(!($con=@mysql_connect($this->Servidor,
                        $this->Usuario,$this->Clave))){
			echo"Error al conectar a la base de datos";
			exit();
		}
		if (!@mysql_select_db($this->BaseDatos,$con)){
			echo "Error al seleccionar la base de datos";
			exit();
		}
		$this->conect=$con;
		return true;
	}

        function cerrar(){
            mysql_close($this->conect);

        }
}
?>

Luego en la clase que se desea conectar a la base de datos se coloca lo siguiente:

        <?php
            include("conexionphp.php");
            $conection=new DBManager;
			if($conection->conectar()==true){
				$val=mysql_query("SELECT * FROM name_tabla");
			}
			$conection->cerrar();
		?>

Este ultimo código podemos colocarlo en cualquier .php y así se hará que la contraseña y el password de nuestra base de datos no este en todos los archivos y si se desea cambiar de usuario bastara con cambiar la primer clase y todo estará bien.

 
1 comentario

Publicado por en julio 5, 2011 en PHP

 

Conceptos Generales de Redes

RED:  también llamada red de ordenadores o red informática, es un conjunto de equipos informáticos conectados entre sí por medio de dispositivos físicos que envían y reciben impulsos eléctricos, ondas electromagnéticas o cualquier otro medio para el transporte de datos para compartir información y recursos. Este término también engloba aquellos medios técnicos que permiten compartir la información. La finalidad principal para la creación de una red de computadoras es compartir los recursos y la información en la distancia, asegurar la confiabilidad y la disponibilidad de la información, aumentar la velocidad de transmisión de los datos y reducir el coste general de estas acciones.

 

DHCP: significa Protocolo de configuración de host dinámico . Es un protocolo que permite que un equipo conectado a una red pueda obtener su configuración (principalmente, su configuración de red) en forma dinámica (es decir, sin intervención particular). Sólo tiene que especificarle al equipo, mediante DHCP, que encuentre una dirección  IP de manera independiente. El objetivo principal es simplificar la administración de la red.

El protocolo DHCP sirve principalmente para distribuir direcciones IP en una red, pero desde sus inicios se diseñó como un complemento del protocolo BOOTP (Protocolo Bootstrap), que se utiliza, por ejemplo, cuando se instala un equipo a través de una red (BOOTP se usa junto con un servidor TFTP donde el cliente encontrará los archivos que se cargarán y copiarán en el disco duro). Un servidor DHCP puede devolver parámetros BOOTP o la configuración específica a un determinado host.


IP: Los equipos comunican a través de Internet mediante el protocolo IP (Protocolo de Internet). Este protocolo utiliza direcciones numéricas denominadas direcciones IP compuestas por cuatro números enteros (4 bytes) entre 0 y 255, y escritos en el formato xxx.xxx.xxx.xxx. Por ejemplo, 194.153.205.26 es una dirección IP en formato técnico.

Los equipos de una red utilizan estas direcciones para comunicarse, de manera que cada equipo de la red tiene una dirección IP exclusiva.


HOST:  un ordenador que funciona como el punto de inicio y final de las transferencias de datos. Más comunmente descrito como el lugar donde reside un sitio web. Un host de Internet tiene una dirección de Internet única (direción IP) y un nombre de dominio único o nombre de host. El término host también se utiliza para referirse a una compañía que ofrece servicios de alojamiento para sitios web.

 

DNS: es un sistema de nomenclatura jerárquica para computadoras, servicios o cualquier recurso conectado a Internet o a una red privada. Este sistema asocia información variada con nombres de dominios asignado a cada uno de los participantes. Su función más importante, es traducir (resolver) nombres inteligibles para los humanos en identificadores binarios asociados con los equipos conectados a la red, esto con el propósito de poder localizar y direccionar estos equipos mundialmente.

 
Deja un comentario

Publicado por en julio 5, 2011 en Redes

 

Procedimiento Almacenado para un Login MySQL

Que tal es dia de hoy realizare un procedimiento almacenado que según el nombre de usuario y la contraseña regresara el id del usuario si el id es diferente de cero el usuario si existe de lo contrario no existe. Esto servirá mas que todo para trabajar de una forma mas segura y no validar o hacer verificaciones dentro del código php, .NET, jsp por mencionar algunos y bueno teniendo el id del usuario se pueden hacer maravillas después.  Igual esto tambien servira de ejemplo de como utilizar los procedimientos almacenados.

El procedimiento almacenado es el siguiente:

CREATE  PROCEDURE `login_usuario`(IN nombre CHAR(30), 
				IN passw CHAR(30),
				OUT existe INT,
				OUT user_name CHAR(30))
BEGIN
         SET existe=0;
         SELECT usuario_name,user_id into user_name,existe 
            FROM nombre_tabla 
            WHERE STRCMP(usuario_name,nombre)=0 
				AND STRCMP(passw,password)=0;
END

bueno los parámetros que espero son nombre, passw(el password) como entradas es decir en MySQL cuando colocamos IN significan que ese dato es solo entrada en cambio OUT es lo que vamos a sacar y se quedara guardado luego en la base de datos que después se puede ir a verificar. También se podría colocar INOUT que servirá para los dos como entrada y salida.

El cuerpo del procedimento almacenado debe estar entreo BEGIN y END. Para asignar un valor a una variable se le coloca el SET seguido del nombre de la variable = y el valor. Este SET existe=0 se coloca por que si no encuentra nada en la consulta retornara un 0 si no se colocara esto si no encontrara la variable el resultado seria NULL o el valor vació.

Luego con una simple consulta verificamos si existe el usuario y contraseña que se esta verificando en MySQL la comparación entre strings se realiza con STRCMP si es 0 significa que son iguales las dos cadenas. Si la primer cadena es mayor devuelve 1 de lo contrario devolverá -1.

Bueno ya sabiendo todo esto se  procedera a ver como llamar a este procedimiento almacenado y como funcionara esto:

call login_usuario(«yonatan»,»passwordprueba»,@a,@b);

Bastara con realizar esta consulta para llamara a este procedimiento almacenado el @a y @b son los parametros que serviran como salida mysql.

Luego despues de hacer esto se le dara:

SELECT @a y retornara el id del usuario luego de esto si el resultado es diferente de 0 el usuario existe y se le dará SELECT @b para obtener el nombre del usuario y mostrarlo en nuestra pagina.

Feliz dia Bendiciones

 
Deja un comentario

Publicado por en junio 29, 2011 en Mysql

 

chkconfig Centos

Bueno en estos días he estado trabajando con un Servidor para Desarrollo en Centos y hay servicios así como Mysql que no se inician al entrar a linux y para no estar levantando todos los servicios cada vez que reiniciaba el servidor esta el chkconfig este contiene el registro de que servicios se inician con Centos y cuales no si se desea verificar que servicios están activados y cuales no y cuales se inician con linux y cuales no bastara con dar
chkconfig –list desde la consola y se mostrara algo como lo siguiente :

como se darán cuenta muestra todos los servicios y su estado. Otra forma de verificar que servicios están activos es con:

service nombre_servicio status 
si se quiere levantar el servicio bastara con
      service nombre_servicio start
si se deseara para el servicio
      service nombre_servicio stop
bueno luego del paréntesis indicare el comando para que se inicie el programa cuando se inicie linux
bastara con colocar
chkconfig nombre_servicio on
por ejemplo para mysql
      chkconfig mysqld on
y listo con esto se iniciara el servicio mysql cuando se inicie windows

 
Deja un comentario

Publicado por en junio 15, 2011 en Centos

 

Triggers Mysql

Triggers en Mysql

Mysql es un DBMS que ha ganado campo a nivel empresarial ya que es una de los mejores DBMS en el mercado ademas de ser Open Source.
Lo que se vera ahorita es la utilización de Triggers o disparadores en esta herramienta estos son procedimientos que se ejecutan cuando sucede algún evento como eliminación , actualización o inserción de datos de una tabla especificada cuando se crea dicho Trigger.

La sintaxis de un trigger es la siguiente:

CREATE TRIGGER name_trigger evento_Disparador ON name_tabla 
FOR EACH ROW
BEGIN
CUERPO;
END

name_trigger:
Indicara el nombre que se desea dar al trigger.
name_tabla:
Nombre de la tabla a la cual se desea agregar el evento.
cuerpo:
Estara todo los procesos aceptados por mysql como algun insert delete o incluso whiles, if, case cabe destacar que no existe for en procedimientos almacenados.
evento_Disparador:
En los eventos de los triggers estan BEFORE UPDATE, BEFORE INSERT, BEFORE DELETE, AFTER UPDATE, AFTER INSERT, AFTER DELETE.
Algo tambien bastante importante es el uso de los alias NEW y OLD en las columnas estos alias sirven para referirse a las columnas como por ejemplo un update si se quiere saber el monto de la una cantidad antes de actualizarse se colocaría OLD.cantidad o por el contrario se coloca NEW.cantidad me podran decir para que serviria esto supongamos la base de datos de una compañia telefonica cuando nosotros ingresamos una recarga y antes teniamos saldo se tendria que sumar el saldo anterior (OLD.saldo) con un nuevo saldo(new saldo) ejemplo.

CREATE TRIGGER trigger_saldo Before Update ON Saldo
FOR EACH ROW
BEGIN
  SET NEW.saldo=NEW.saldo+OLD.saldo;
END
El SET es para asignar el valor es propio  de la sintaxis de Mysql y lo que se hace aqui es un disparador que cada vez que se actualice la tabla saldo que se sume el saldo viejo con el nuevo y se asgine al campo que va ingresar solo se pueden asignar valores a los campos NEW. campo a los OLD.campo no se les puede asignar valores.

El alias OLD sirve para  DELETE y UPDATE
El alias NEW UPDATE, INSERT

 
Deja un comentario

Publicado por en junio 15, 2011 en Mysql