domingo, 8 de abril de 2018

Servicio Rest







package com.rest.webservices;

//import javax.swing.plaf.synth.SynthSeparatorUI;
//import javax.ws.rs.Consumes;
//import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
//import javax.ws.rs.Produces;
//import javax.ws.rs.QueryParam;
//
//import org.springframework.http.MediaType;




@Path("/HSBC")
public class wsClable {

public wsClable(){
System.out.println("Entre");
}


@POST
@Path("/clabe")
//@Consumes(MediaType.APPLICATION_JSON_VALUE)
//@Produces(MediaType.APPLICATION_JSON)
public String clabe(){
System.out.println("Lllegue... ");

return "021923" + "" + "1";
}


}



<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>WebServicesRest</display-name>

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>HSBC</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>

<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.rest.webservices</param-value>
</init-param>

<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>
<servlet-name>HSBC</servlet-name>
<url-pattern>/HSBC/*</url-pattern>
</servlet-mapping>

</web-app>



<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>WebServicesRest</groupId>
  <artifactId>WebServicesRest</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>war</packaging>
  
  <dependencies>

<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-client</artifactId>
<version>1.19.4</version>
</dependency>


<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
<version>1.19.4</version>
</dependency>



<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-json</artifactId>
<version>1.19.4</version>
</dependency>


<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.0.9.RELEASE</version>
</dependency>


<dependency>
<groupId>javax.json</groupId>
<artifactId>javax.json-api</artifactId>
<version>1.1.2</version>
</dependency>



</dependencies>
  
  <build>
    <testSourceDirectory>src/test/resource</testSourceDirectory>
    <plugins>
      <plugin>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.5.1</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
      <plugin>
        <artifactId>maven-war-plugin</artifactId>
        <version>3.0.0</version>
        <configuration>
          <warSourceDirectory>WebApp</warSourceDirectory>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>



<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>Hola Mundo</h1>
</body>
</html>

jueves, 28 de septiembre de 2017

Primefaces

En esta entrada se observa algunas funcionalidades básicas para una página con JSF y primefaces. Suponiendo que es un login.

Login.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">

<ui:composition template="/WEB-INF/templates/BasicTemplate.xhtml">
<ui:define name="content">
<h:form>
<p:growl id="growl" showDetail="true" sticky="true" />
<p:panel>
<p:panelGrid columns="4" cellpadding="8">
<h:outputLabel for="impUsr" value="Usuario: "></h:outputLabel>
<h:inputText id="impUsr" value="#{loginBean.name}" required="true"
requiredMessage="Introduzca usuario" title="Introduzca usuario"></h:inputText>
<p:message for="impUsr" display="Text" />
<p:tooltip id="toolTipImpUsr" for="impUsr" showEvent="impUsr"
hideEvent="blur" />


<h:outputText value="Password: "></h:outputText>
<h:inputSecret id="impPwd" value="#{loginBean.password}"
required="true" requiredMessage="Introduzca password"
title="Introduzca password"></h:inputSecret>
<p:message for="impPwd" />
<p:tooltip id="toolTipImpPwd" for="impPwd" showEvent="impPwd"
hideEvent="blur" />

</p:panelGrid>
</p:panel>

<h:commandButton value="Login" 
actionListener="#{loginBean.validationMenssage}" ></h:commandButton>

</h:form>
</ui:define>
</ui:composition>

</html>

lunes, 4 de septiembre de 2017

Hello World JSF

Para ver el ejemplo integrado en un STS revisa mi canal de youtube makecode7 https://www.youtube.com/watch?v=vVUOE6kz2Kw&t=66s. En los siguientes fragmentos de código se puede ver un ejemplo básico de como crear nuestra primer aplicación usando JSF.

pom.xml


<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>First-JSF</groupId>
<artifactId>First-JSF</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>

<dependencies>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-api</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.myfaces.core</groupId>
<artifactId>myfaces-impl</artifactId>
<version>2.2.0</version>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.0.0</version>
<configuration>
<warSourceDirectory>webapp</warSourceDirectory>
</configuration>
</plugin>
</plugins>
</build>
</project>


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>


index.xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:h="http://java.sun.com/jsf/html"
 xmlns:f="http://java.sun.com/jsf/core">
<h:head>
<title>JSF Title</title>
</h:head>
<h:body>
Hello from Facelets
    <h:outputText value="Hello World"></h:outputText>
<h:outputLabel value=" Otra forma..."></h:outputLabel>
<h:button value=" Button Example"> </h:button>
</h:body>
</html>




miércoles, 27 de abril de 2016

Hacer deploy java de Linux

Generalmente, para generar un deploy se necesitan seguir estos pasos:

1.- Primero, tener el código funcionando correctamente, ya sea en tu local o en el servidor.
2.- una vez que ya se tiene, el siguiente paso es instalar java, maven, tomcat, mysql.
3.- Ya que todos los anteriores funcionan, se escribe el siguiente comando para eliminar compilaciones anteriores fallidas o exitosas

> mvn clean

4.- después puedes usar los siguientes comandos

> mvn package
> mvn package -Dmaven.test.skip=true  //para evitar el TEST

Otros comandos que pueden servir cuando estamos compilando son:

> mvn -v
> mvn eclipse:eclipse
> mvn compile

5.- Una vez generado ponerlo en /apache-tomcat-6.0.35/webapps/

Configuración de las variables de entorno

export JAVA_HOME=/usr/lib/jvm/java-6-oracle

export PATH=$PATH:$JAVA_HOME/bin/

export M2_HOME=/usr/local/apache-maven/apache-maven-3.2.1

export M2=$M2_HOME/bin/

export PATH=$M2:$PATH

export MAVEN_OPTS="-Xms4608m -Xmx4608m"



Configurar servidor linux FTP 

Seguir los pasos que se encuentran en la página: 
http://rootear.com/ubuntu-linux/instalar-servidor-ftp

Adicionalmente en /etc/vsftpd.conf agregar la siguiente linea

allow_writeable_chroot=YES


y reinicie el servicio usando
sudo service vsftpd restart


Acceder al servidor FTP
Se puede hacer a través de:

Navegador
poniendo ftp//x.x.x.x

Consola
poniendo ftp y siguiendo el siguiente tema

FileZilla
Poniendo IP, usuario, password, puerto 21.

WinSCP
Poniendo IP, usuario, password, puerto 21. Particularmente esta herramienta nos permite ser más flexibles en cuestión de permisos, podemos configurar permisos y acceder a todos los directorios. Recomendada.

Código en java
Podemos hacerlo como se muestra en el sigueinte ejemplo:
var url ="ftp://usuario:password@x.x.x.x/"

window.open(url);

Es importante mencionar que el usuario, es el que se crea asociado a FTP, pero es un usuario de linux.

Tip: firefox permite instalar un plugin con el que es posible subir archivos y crear carpetas en el sevidor.


Subir archivos por consola a través de FTP

Cuando nos encontramos en una consola y tenemos instalado ftp podemos subir archivos al servidor (siempre que este tenga instalado un sevidor de ftp, ejemplo vsftpd) utilizamos los siguientes comandos:

ftp
open dns/ip del servidor
usuario
password
bin
hash
put archivo1.rar

lunes, 14 de marzo de 2016

Crear modelo de base de datos - Mysql Workbench

Ingeniería inversa es la capacidad de poder reconstruir los hechos a partir de un punto. Workbench, crea el modelo una vez que ya esta la base de datos lista. Para esto.

1. Desde el menú de opciones hacer clic en <Database> luego seleccionar <Reverse Engineer...>
2. Hacer clic en Next. O bien seleccionar el hostname (localhost para bd local), ingresar username o password.
3. Seleccionar Next.
4. Seleccionar la BD  y luego Next.
5. Una vez más seleccionar Next.
6. Hacer clic en Execute.


lunes, 19 de octubre de 2015

Criptografía cuántica

Criptografía cuántica
En palabras sencillas la criptografía cuántica es aquella que utiliza la mecánica cuántica para transmitir de forma segura o confidencial información sensible. La criptografía es la técnica de encriptar información de modo que no sea tan fácil entender el significado del mensaje. La cuántica por su parte es la mecánica cuántica hace referencia a la existencia del átomo y su estructura.
El principal problema de la criptografía clásica es justamente el intercambio de claves para cifrar/descifrar el mensaje cifrado, en el caso de la criptografía cuántica permite que dos personas puedan compartir información sensible como claves, de manera segura, y detectando inclusive cuando algún intruso se encuentra en la red husmeando.
A diferencia de la criptografía con clave pública tradicional la criptografía de clave pública no descansa en la complejidad computacional, sino en la mecánica cuántica. La criptografía cuántica utiliza la luz para transmitir información a través de láseres, el foton; conduciendo la información por fibra óptica.
Conceptos de la mecánica cuántica:

-             -  Superposición: una misma partícula puede poseer dos estados a la vez.

-             - Colapso de estados: al ser medida una partícula se altera su estado superpuesto determinado en           que estado particular.

-             - Incertidumbre: es imposible saber el valor exacto de la posición y momentum. Cuanto más                 precisa sea la medición sobre una propiedad, mayor será la incertidumbre de la otra propiedad.
-         
              - Entrelazamiento: Dos partículas cuánticas pueden tener estados fuertemente ligados, debido a que    se generaron al mismo tiempo o a que interactuaron, Ej. Durante un choque.
   
Las partículas que se utilizan normalmente en la criptografía cuántica son los componentes de la luz o fotones, y los estados de utilizan para ser entrelazados o superpuestos.
Intercambio de claves cuánticas

BB84
Protocolo publicado por Charles Bennett y Gilles Brassard en 1984. En este protocolo la transmisión se logra utilizando fotones polarizados enviados entre A y B a través de un canal cuántico (Fibra Óptica), también es necesario otro canal público para construir la clave secreta compartida, no es necesario que los canales sean seguros.

Paso 1
Cuando el punto A, decide enviar una secuencia de fotones polarizados al punto B inicia el protocolo. El punto A, genera una secuencia aleatoria de bases (rectilíneas + y diagonales x) las cuales se almacenan momentáneamente, luego se envía por un canal cuántico.

Paso 2
El punto B, no sabe cuáles fueron las bases que uso el punto A, así que inicia midiendo la polarización de los fotones usando una base aleatoria generada por el y registra las bases que utilizaó.

Paso 3
A y B se contactan por el canal público para comunicarse las bases que utilizaron para generar y leer respectivamente. Una vez conocida la clave secreta de ambos pasa al siguiente paso.

Paso 4
Debido a que utilizaron un canal inseguro, alguien pudo haber modificado la polarización de los fotones así que A y B deben comprobar que los bits que no fueron descartados coincidan en su valor, si un intruso intenta medir los fotones no sabe en que base se generaron, por lo que tiene que hacer mediciones al azar lo cual introduciría perturbación a los protones alterando su comportamiento.
Paso 5

“Para codificar un mensaje se puede utilizar el mismo canal cuántico con fotones polarizados, o utilizar el canal público cifrando el mensaje con un algoritmo de cifrado, ya que la clave para el cifrado se ha transmitido de manera absolutamente segura

Implentación de la criptografía cuántica
“Basado en estos principios, se definen protocolos de comunicación que utilizan la polarización de los fotones para codificar información binaria que conformará la clave secreta. Estos protocolos incluyen mecanismos de corrección en caso de errores de transmisión.”

“Los primeros productos comerciales de criptografía cuántica salieron al mercado en 2002. Desde entonces los avances no dejan de producirse y la adopción de esta tecnología, si bien lenta al principio, tiende a acelerarse.”

Referencias
.Seguridad. (2013). Criptografía cuántica. 20/10/2015, de DEFENSA DIGITAL Sitio web: http://revista.seguridad.unam.mx/numero-18/criptograf%C3%AD-cu%C3%A1ntic


Dra. Alfonsa García, Dr. Francisco García, Dr. Jesús García. (2014). Curso: Computación y Criptografía Cuántica. 20/10/2015, de Universidad Politécnica de Madrid Sitio web: http://www.criptored.upm.es/crypt4you/temas/cuantica/leccion2/leccion02.html