Instalación de Android-Eclipse

Posted by Yonatan Grajeda Cuesi On miércoles, 18 de enero de 2012 0 comentarios

Primero se tiene que descargar el SDK de android y eclipse. Luego de esto ejecutar en la carpeta de android/tool el programa que dice android saldra una ventana como la siguiente despues de esto hay que ir a available packages e instalar lo que se muestra instalado en la imagen mostrante. Aunque en mi caso descargue varios APIS pero solamente se podria instalar el mas reciente.


Luego de esto se debe de crear los dispositivos virtuales en este caso se creo para cada API que se instalo pero bastara con colocar solamente uno.


Luego de esto se debera de instalar el plugin de android en eclipse.
Se añadira el nuevo site en: Menú Help -> Install New Software -> Botón Add. El site es: https://dl-ssl.google.com/android/eclipse/ y bastara con chequear lo que se desea y se instala el nuevo plugin.



Para crear un nuevo proyecto de android se debera de seleccionar File-> New -> Other

Se selecciona Android -> Android Project y dar siguiente.

Saldra una ventana como la siguiente solo se debera de especificar el API y el nombre del proyecto tambien asi como el nombre de la aplcicacion y el Activity.


En este paso bastara solamente con Finalizar.

Para inicializar el emulador bastara con ejecutar el ejemplo que se ha creado y esto nos levatnara el emulador.


Ahora se procedera a colocarle botones, cuadros de texto a nuestra forma. Para esto se debe crear un layout se podria hacer en el mismo main.xml pero para hacerlo de mejor forma sera con esto. Para esto se debe agregar uno nuevo de la siguiente forma.


Luego se Ejecuta la Aplicacion y se podra ver algo como lo siguiente.




Desarrollado con eclipse-java-helios-SR2-linux-gtk y android-sdk_r11-linux_x86. Android Plataforma 3.1 API 12

READ MORE

JUNIT

Posted by Yonatan Grajeda Cuesi On domingo, 15 de enero de 2012 0 comentarios

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 JUnitQué 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);
READ MORE

Abrir un documento desde Java

Posted by Yonatan Grajeda Cuesi On 1 comentarios

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");
     }
    }
READ MORE

Escribir un archivo en Java

Posted by Yonatan Grajeda Cuesi On 0 comentarios

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();
     }
    }
    }
READ MORE

IPV6

Posted by Yonatan Grajeda Cuesi On 0 comentarios

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
READ MORE

Conexion PHP con Mysql Usando Clases

Posted by Yonatan Grajeda Cuesi On 0 comentarios

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.
READ MORE

Procedimiento Almacenado para un Login MySQL

Posted by Yonatan Grajeda Cuesi On 2 comentarios

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
READ MORE

chkconfig Centos

Posted by Yonatan Grajeda Cuesi On 0 comentarios

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 linux

READ MORE

Triggers MYSQL

Posted by Yonatan Grajeda Cuesi On 0 comentarios

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

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
READ MORE