martes, 11 de noviembre de 2014

5 Morning Rituals to Keep You Productive All Day Long


5 Morning Rituals to Keep You Productive All Day Long


1.- 7 minutes of exercise
2.- Batido Verde en la mañana
3.- Marca 3 victorias al dia (dentro de tus objetivos)
... leer el articulo


http://www.entrepreneur.com/article/230734

Me gusto este articulo

lunes, 3 de noviembre de 2014

El Futuro Cercano, solo si eres Programador

Ver articulo completo aqui.

Predicción 1: Los GPUs serán los próximos CPUs
Predicción 2: Las bases de datos realizarán análisis más sofisticados\
Predicción 3: JavaScript para todo
Predicción 4: Android en todos los equipos
Predicción 5: El internet de las cosas -más plataformas que nunca
Predicción 6: Open source encontrará más formas de entrar al mercado

....

Object Validation para una facil validacion de campos


rica: graphValidator 
es un componente que permite realizar la validación del objeto. los atributos deben ser definidos en el bean. En el resultado de todas las propiedades del BEAN(Clase) se validarán durante la fase de validación. Eso le permite validar todas las propiedades de los objetos y no sólo los que se presentan con la solicitud actual. Simple, pero probablemente ejemplo más común de este tipo de uso se muestra a continuación. Contraseñas siendo validados de acuerdo a las limitaciones de cada comprobación de validación de campo y isPasswordEquals si ellos son iguales.


CSV
puedes ver un ejemplo funcionando aqui.

Atributo necesario, se debe investigar porque dice "rich:graphValidator " confunde un poco.
<rich:graphValidator value="#{passwordValidationBean}" id="gv">
            <rich:panel header="Change password" style="width:500px">

metodo de validacion:
@AssertTrue(message = "Different passwords entered!")
    public boolean isPasswordsEquals() {
        return password.equals(confirm);
    }





lunes, 13 de octubre de 2014

Porque necesitamos actualizar a ireport 5.6.0

Saludos creando un reporte normal en ireport, con cabecera, imágenes, doble banda cada una con un sub-reporte. imágenes cargadas desde FileSystem, marca de agua, firma, etc..  tan bonito todo, que estaba con los pies en agua, viendo futbol, con una pantalla de facebook chateando y trabajando en el reporte, hasta que!!!!
lo trate de llamar desde java.

En java presento una excepcion por que existian caracteres áñ ... en el .jasper] después de horas investigando, encontré que el problema esta en la version 5.2 de ireport. :S

instale la 5.6.0 y 
 feliz


miércoles, 8 de octubre de 2014

Mi primer Script en Linux Centos




Sencillo, pero ignorado por un Principiante.....

Hola Chicos....!!!!

A continuación les enseño como crear un script en linux con unos pasos realmente sencillos =)


  1. Deberá direccionarse a la ruta donde creará el script
  2. Dar Permiso al Script
  3. Abrir el archivo con el comando vim
  4. Teclear la tecla I para poder insertar
  5. Agregue lo siguiente: 

          #!/bin/bash
          #-*- ENCODING: UTF -8 -*-
          #desc: mi primer script de prueba
         echo "#INFO este script ya funciona"
         exit
    6.   Finalmente ejecute el script con "./"






No duden en comentar!!!

Saludos Chicos...

Lü  =)

martes, 7 de octubre de 2014

REPLICACIÓN DE MYSQL (MASTER-SLAVE)




REPLICACIÓN DE MYSQL (MASTER-SLAVE)






Para realizar una correcta replicación se debe verificar que los dos servidores tengan la misma versión de mysql en este caso implemento la 5.6 esto es muy importante.
Se deberá definir a un servidor como Master y a otro como Slave, una vez definido cual cumplira la función predefinida se realizará los siguientes pasos:

Configuración en el Master
  • Abrir el archivo my.cnf en general casi siempre se encuentra en esta ruta: /etc/my.cnf, ejecutar el siguiente comando: vim /etc/my.cnf  o descargar el archivo por ftp el que recomiendo en el Filezilla. Bueno una vez obtenido el archivo deberán agregar lo siguiente:  
           log-bin   = mysql-bin
           server_id = 1
           binlog_checksum=none
           binlog_do_db=nombreBase
   
  • Reiniciar el mysql puede hacerlo con los siguientes comandos: 
          service mysqld restart
          sudo /etc/rc.d/init.d/mysql restart
          sudo /etc/init.d/mysql restart

  • Ejecutar comandos de permisos
        grant RELOAD,SUPER,REPLICATION CLIENT on *.* to nameSlave@'ipSlave'  identified          by 'claveSlave';
  • Deberá guardar lo que le muestra al ejecutar el siguiente comando:
          SHOW MASTER STATUS;



Configuración en el Slave

  • Igual que el master debemos mosdificar el archivo de configuación del mysql (my.cnf)
  • Se debe agregar las siguientes lineas:
          log-bin=mysql-bin
          server-id=2
          relay-log = mysqld-relay-bin
          max-relay-log-size= 500M
          relay_log_purge= 1

  • Debemos reiniciar el archivo de Configuración (my.cnf)
  • Ahora utilizaremos la información que nos mostró el master

CHANGE MASTER TO MASTER_HOST='ipMaster',MASTER_USER='nameSlave', MASTER_PASSWORD='claveSlave', MASTER_LOG_FILE='mysql-bin.000005', MASTER_LOG_POS=  19430519;

  • Finalmente ejecutaremos el slave:   start slave;
También puede obtener el status con el siguiente comando:  show slave status;


Listo ya tenemos nuestra replicación!!!


Cualquier inquietud no duden en comentar...

Saludos..
Lü   =)

viernes, 3 de octubre de 2014



SSL (SECURE SOCKET LAYER)  

¡¡¡Hola Chicos!!!

Esta semana me toco empaparme bastante en este tema SSL, por lo cual decidí postearlo para tener una buena información a la mano.
Existe bastante información realmente buena sobre este tema como lo explica en este blog:


Al leer esa información nos permite tener una idea general sobre este maravilloso tema.
La pregunta es como lo implemento?

Para realizar un ejemplo utilice el siguiente entorno:

  • Sistema Operativo:Windows (aunque pronto lo haré en linux, así que lo estaré actualizando en caso tengo algún cambio importante)
  • Java:  1.7.0_67
  • Servidor de Aplicación: Glassfish 4.0
  • ide: Netbeans
Primeramente cree una pequeña aplicación que contenga un webservice pueden utilizar el que le da por default netbeans, acontinuación les pongo el código:


@WebService(serviceName = "WsSSL")
public class WsSSL {

    /**
     * This is a sample web service operation
     */
    @WebMethod(operationName = "hello")
    public String hello(@WebParam(name = "name") String txt) {
        return "Hello " + txt + " !";
    } 

Podrán probarlo y funcionará perfectamente ya que se encuentra bajo el protocolo normal http, ahora para que se execute bajo el https se debe agregar lo siguiente en el web.xml

  <security-constraint>
        <web-resource-collection>
            <web-resource-name>Protected Context</web-resource-name>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
 
        <!-- auth-constraint goes here if you requre authentication -->

        <user-data-constraint>
            <transport-guarantee>CONFIDENTIAL</transport-guarantee>
        </user-data-constraint>
    </security-constraint>

Entonces cuando quieran verificar que su webservices funciona deberán en el browser colocar https.
De esta manera nuestro webservices ya se encuentra bajo el protocolo SSL.

Si el cliente que va consumir el webservices es también desde JAVA debe obtener el certificado ubicandonse en el url y dar click en el candadito y seleccionar Datos del Certificado, la ventana que le muestra es la siguiente:


Luego damos clic en Copiar en archivo y almacenaremos en una ruta "X".

Ejecutaremos los siguientes comandos para agregar el certificado al Almacen de claves de JVM.

keytool -import -keystore "C:\Archivos de
programa\Java\jre1.6.0_05\lib\security\cacerts" -file
c:\NuevaEntidadCertificadora.cer -alias CA_SwitchOffAndLetsGo -storepass
changeit


NuevaEntidadCertificadora es el nombre que colocamos al certificado descargado.
CA_SwitchOffAndLetsGo  este es el alias puede ser cualquiera.
changeit por default siempre es este password 


Por lo cual ya podemos consumir el webservices, normalmente.

Bueno chicos por el momento hasta aki!!

Cualquier comentario me indican...


Saludos,

Lü  =)







lunes, 25 de agosto de 2014


Premature end of script headers: index.php


Hola Chicos =)

Les comento que en mi lugar de trabajo se adquirió un VPS en hostGator, por lo cual tuve que empezar a realizar las respectivas configuraciones de java,mysql, php, zendSkeleton.
Todo iba bien el java rapidísimo, mysql igual, pero cuando me toco verificar la página en el browser para saber si funciona, me envio error 500 Internal Server .

Verifique en el archivo log de apache para entender cual fue el error.. y me topo con lo siguiente:
Premature end of script headers: index.php

Al principio ni idea de que se trataba, empece a investigar, encontré que era permisos, que el archivo no era posible acceder desde otro usuario, que tendría que asignarles de la siguiente forma:
                           chown -R user /var/www/html/zf2-tutorial/public
Lo malo es que no sabía cual era mi usuario, ya que solo me dieron root, esto no permitía que funcionará. 
Para no alargarles el cuento.. la solución era con el usuario apache, entonces se debía ejecutar estos 2 comandos:

chown -R apache /var/www/html/zf2-tutorial/public
chgrp -R apache /var/www/html/zf2-tutorial/public

De esa manera la página cargo exitosamente!!!


Espero les sirva...

Hasta luego Chicos =)

lunes, 4 de agosto de 2014



¡Subir Archivos a Servidor Linux en Java y Php!

¡Hola Chicos!

Hace unos días atrás pensaba que subir un archivo al servidor era realmente imposible realizarlo, pero ps realmente no era así...
Enviar archivos desde aplicación en Java o en Php.. es realmente sencillo.
En Java no pide permisos de escritura ni nada por el estilo, pero en php si, en la carpeta principal del proyecto, debe otorgar permisos 777, para que copie el archivo.

Tanto en java como en php, requieren de un html en donde esta compuesto por un formulario que es similar a esto:

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>JSP Page</title> 
</head> 
<body> 
<form action="uploadFile.jsp" method="post" enctype="multipart/form-data"> 
<input type="file" name="file"/> 
<br /> 
<input type="submit" value="Subir archivo" /> 
</form> 
</body> 
</html>

Lo único que cambia es que en la action del formulario deberá llamar en java a un jsp y en php, un archivo propio de php.

El jsp tendría lo siguiente:

<%@ page import="org.apache.commons.fileupload.FileItem" %> 
<%@ page import="java.util.*" %> 
<%@ page import="org.apache.commons.fileupload.*" %> 
<%@ page import="org.apache.commons.fileupload.disk.*" %> 
<%@ page import="org.apache.commons.fileupload.servlet.*" %> 
<%@ page import="org.apache.commons.io.*" %> 
<%@ page import="java.io.*" %> 

<%
java.io.File dir = new File("/home/prueba/cedula");
dir.mkdir();//Esta línea permite crear la ruta si no existe.
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024); 
//factory.setRepository(new File(ubicacionArchivo));
factory.setRepository(dir);
ServletFileUpload upload = new ServletFileUpload(factory);

try
{
List<FileItem> partes = upload.parseRequest(request);

for(FileItem item : partes)
{
File file = new File( dir, item.getName() );
item.write(file);
}
out.write("El archivo se a subido correctamente") ;
}
catch(FileUploadException ex)
{
out.write("Error al subir archivo "+ex.getMessage());
}
%>

En php sería lo siguiente:

<?php
if(isset($_POST["submit"]))
{
 $nombre_archivo = $_FILES["archivo"]["name"];
 $tipo_archivo = $_FILES["archivo"]["type"];
 $tamano_archivo = $_FILES["archivo"]["size"];

 $limite = $_POST["limite"];
 if($tamano_archivo<=$_POST['limite'])
 {
 if(move_uploaded_file($_FILES["archivo"]["tmp_name"], $nombre_archivo))
 {
 echo "El archivo " . $nombre_archivo . " se ha transferido correctamente. <br />";
 echo "Su tamaño es de: " . $tamano_archivo . " bytes.";
 echo "El tipo de archivo es: " . $tipo_archivo;
 }
 else
 {
 echo "No se ha podido transferir el archivo, verifique el tamaño del archivo e intente nuevamente.";
 }
 }
 echo "<a href='.$nombre_archivo.'>";
}
?>


Realizando este código funciona perfectamente..!!!!


Saludos....=)


lunes, 28 de julio de 2014


ZENDSKELETON

Hola Chicos!!! =)

En esta entrada se trata de PHP, en donde por necesidad del trabajo, me toco implementar un proyecto de PHP desarrollado en el framework ZendSkeleton les doy el enlace de la página principal:

http://framework.zend.com/

Este proyecto funcionaba perfectamente en Windows, pero se debía implementar en el S.O. Linux distribucción Centos.

Les comento que me ocurrió más de mil errores sin exagerar... y lo único que hice es seguir los mismos pasos que me indica en la página principal, y en muchísimossssss blogs que me leí y nada.... pero vale recalcar que pase el proyecto desarrollado en Windows con el FTP fileZilla.
Al parecer esto genero algún conflicto ya que me salían errores tales como:

Fatal error: Class 'Zend\Mvc\Application' not found in /var/www/html/ZendSkeleton/ZendSkeleton/public/index.php on line 21

Fatal error: Class 'ZendLoaderAutoloaderFactory' not found


La solución que decidí tomar, fue montar un proyecto limpio, directamente desde Linux, generar con el composer, las respectivas dependencias, gracias eso pude obtener la pantalla inicial de ZendSkeleton:




Con el archivo nuevo, monte todo lo relacionado a mi proyecto original... de esa forma funciono perfectamente, aunque en la página les explica como realizar paso a paso, les haré un recuerdo también por este blog... =)


1.-  Descargar el proyecto del siguiente link:  https://github.com/zendframework/ZendSkeletonApplication
      donde dice Download Zip, si desea puede cambiarle el  nombre del proyecto a zf2-tutorial.
2.- Ubica el proyecto en la ruta de linux que sería /var/www/html/

3.   Ejecute los siguientes comandos, para generar las librerías:
                                                          php composer.phar self-update
php composer.phar install
php composer.phar update
4. Modifica el archivo de configuración del apache, que generalmente se encuentra en la ruta: /etc/httpd/conf/httpd.conf deberan agregar el  siguiente virtualHost:

<VirtualHost *:80>
     ServerName zf2-tutorial.localhost
     DocumentRoot /path/to/zf2-tutorial/public
     #SetEnv APPLICATION_ENV "development" --> Actualmente no es necesario agregarlo
     <Directory /path/to/zf2-tutorial/public>
         DirectoryIndex index.php
         AllowOverride All
         #Order allow,deny
         #Allow from all
         Require all granted
     </Directory>
     <IfModule mod_suphp.c>
  suPHP_Engine On
  suPHP_UserGroup apache apache
     </IfModule>
 </VirtualHost>


5. Reinicia el Apache:
   service httpd restart

6. Modifica el host en el siguiente archivo: vim /etc/hosts
   agrega lo siguiente:

   127.0.0.1               zf2-tutorial.localhost localhost

7. Finalmente modifica el .htaccess se encuentra en /rutaZend/public añadir las siguientes líneas:

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^ index.php [NC,L] 


Y listo!!!! el proyecto funcionará =)

Nos vemos en otra entrada... Chaoooppp!!!! =) 





martes, 4 de marzo de 2014

The Network Adapter could not establish the connection



Hola Chicos!!!!

Se han topado con la famosa excepción: The Network Adapter could not establish the connection....

Este error sucede cuando nos queremos conectar a un servidor virtualizado y al momento de establecer nuestra conexión en java cometemos fallas:

Class.forName("oracle.jdbc.OracleDriver");

Connection c = DriverManager.getConnection("jdbc:oracle:thin:@(description=(address=(host=localhost)(protocol=tcp)(port=1521))(connect_data=(sid=mybase)))","usuario","clave"); 

Ese error me ocurrió por no colocar el host correcto ya que habia colocado la ip pública y eso hacia 
que estuviera saliendo a internet y otra vez entrando y necesitaria permisos para el puerto 1521
.. la solucción fue cambiar a localhost


lunes, 24 de febrero de 2014




Hola Chicos,

Esta entrada es sobre el manejo de fechas tanto en oracle como en java, muchas veces se nos hace un
dolor de cabeza el guardado de fechas, es decir la conversión de ellas.

Para Insertar una fecha en mi base realice la típica conversión que es:

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

q.setParameter("fechaDesde", sdf.format(fechaDate));  

Realizando esta conversión me mandaba el error del que mes no era válido y estaba totalmente correcto, entonces luego de investigar y consultar se puede realizar también lo siguiente para que la conversión la realice totalmente oracle y no java.

dbainsert="INSERT INTO TABLA(campo1, campo2,campoFecha,campo4,campo5,campo6,campo7) values (?,?,to_date(?,'dd/mm/yyyy'),?,?,?,?)"; 

Lo sombreado es donde permite realizar la conversión y nuestro dato que enviamos debe ser de tipo STRING.