viernes, 28 de diciembre de 2012

Habilitar Xdebug en wamp

Aqui un link por si lo deseas integrar con eclipse http://www.plinky.it/blog/2011/02/14/debug-in-php-activate-xdebug-using-wamp/#axzz2GMxyDYxe, En el php.ini
; XDEBUG Extension

zend_extension = "c:/wamp/bin/php/php5.4.3/zend_ext/php_xdebug-2.2.0-5.4-vc9-x86_64.dll"

[xdebug]
xdebug.remote_enable = on
xdebug.profiler_enable = on
;xdebug.profiler_enable_trigger = on
;xdebug.profiler_output_name = cachegrind.out.%t.%p
xdebug.profiler_output_dir = "c:/wamp/tmp"
xdebug.remote_handle=dbgp

lunes, 10 de diciembre de 2012

Clase util para foliar en excepciones

De esta forma se pueden identificar mas rapido las excepciones, la clase esta basada en el patron de diseño singleton. El metodo me lo paso mi compa oscar grax.

Para llamarla Foliador.getFolio().
public class Foliador {
 
 /** El foliador. */
 private static Foliador foliador;

 /**
  *  
  * Constructor que previene el instanciamiento.
  *
  */
 private Foliador() {
 }

 /**
  * Obtiene la instancia de Foliador.
  *
  * @return instancia unica de Foliador
  */
 public static synchronized String getFolio() {
  if (foliador == null) {
   foliador = new Foliador();
  }
  return foliador.generaFolio();
 }

 /**
  * Sobreescritura del metodo clone
  */
 public Object clone() throws CloneNotSupportedException {
  throw new CloneNotSupportedException();
 }
 
 /**
  * Genera un folio.
  *
  * @return el folio
  */
 private String generaFolio() {
  String folio;
        folio = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date());
        return "Folio de error: " +folio.toString()+" ";
    }
}

lunes, 26 de noviembre de 2012

Mas alla de Tank-Auth RBAC y ACL

Tank-Auth es un componente para codeigniter que te permite realizar lo basico conforme a opciones de logueo o login, existen otras extensiones que buscan agregarle roles,  un paso mas alla Role Base Access Control RBAC, te permite dar permisos a los roles les dejo esta excelente lib que practicamente hace todo lo realacionado a los permisos https://github.com/enchance/Tank-Auth otra alternativa es https://github.com/vendo/vendo/wiki/Acl

miércoles, 21 de noviembre de 2012

Algoritmos de vistas en mysql

Me tope con una vista que era demasiada lenta.
Viendo optimizaciones me tope con 3 tipos de algoritmo.
UNDEFINED,TEMPTABLE,MERGE.

EL PRIMERO LA BD SELECCIONA AUTOMATICAMENTE, generalmente se va por MERGE.
TEMPTABLE CREA UNA TABLA TEMPORAL.
 
MERGE NO PUEDE SER USADO.
  • Aggregate functions (SUM(), MIN(), MAX(), COUNT(), and so forth)
  • DISTINCT
  • GROUP BY
  • HAVING
  • LIMIT
  • UNION or UNION ALL
  • SuBQUERY



    CREATE ALGORITHM=MERGE VIEW VISTAEJEMPLO AS


Aumentar el tamaño de almacenamiento de archivos BLOB en MYSQL

SET GLOBAL  max_allowed_packet=100*1024*1024;
show variables like 'max_allowed_packet';
Y si esto no funciona buscar en la ruta de instalación de mysql en este caso la mia es C:\xampp\mysql\bin
el archivo  my.ini y el texto max_allowed_packet cambiar el valor

domingo, 18 de noviembre de 2012

miércoles, 14 de noviembre de 2012

Librerias necesarias para jasper 4

Librerías necesarias para reportes en jasper 4
Es seguro q las librerias las puedas encontrar en http://mvnrepository.com/

lunes, 12 de noviembre de 2012

Plugin de bloqueo de pantalla en jquery

Tal vez no sea la mejor solución pero te saca pronto de apuros. https://github.com/malsup/blockui/

Ajusta el contenido de una tabla

Trabajando con tablas me paso que después de agregar varios spans dentro de una columna, no me estaba respetando el tamaño de la tabla, asi que agregue estos estilos.
Estilo de la tabla
table-layout: fixed;
Estilo de la columna
word-wrap:break-word

miércoles, 7 de noviembre de 2012

Url en partes javascript

http://lafabricadesoftware/jquery/index.html
window.location.protocol = "http"
window.location.host = "lafabricadesoftware"
window.location.pathname = "jquery/index.html"

martes, 6 de noviembre de 2012

Url actual con javascript

Ir a la url actual, document.URL

Error Page-encoding en jsp

org.apache.jasper.JasperException: empleado.jsp(1,1) PWC6233: Page-encoding specified in jsp-property-group (iso-8859-1) is different from that specified in page directive (ISO-8859-1). Este error o viene del page encoding del jsp o del xml. En mi caso es el xml.
 <jsp-config>
        <jsp-property-group>
            <url-pattern>*.jsp</url-pattern>
            <page-encoding>iso-8859-1</page-encoding>
            <scripting-invalid>false</scripting-invalid>
            <is-xml>false</is-xml>
            <trim-directive-whitespaces>true</trim-directive-whitespaces>
        </jsp-property-group>                
    </jsp-config>  

miércoles, 31 de octubre de 2012

Encode y Decode HtmlEntities


function htmlEncode(value){
    if (value) {
        return jQuery('<div />').text(value).html();
    } else {
        return '';
    }
}
 
function htmlDecode(value) {
    if (value) {
        return $('<div />').html(value).text();
    } else {
        return '';
    }
}

viernes, 19 de octubre de 2012

martes, 16 de octubre de 2012

Librería para ambientaciones

Librería para ambientaciones en java Jfig

Ajax en Struts, metodo

Metodo para struts que escribe respuestas esilo json, usarlo en el return del action.
 public ActionForward writeJson(ActionMapping mapping,
      HttpServletResponse response,String message) {
     
      response.setContentType("text/html;charset=utf-8");
      response.setHeader("cache-control", "no-cache");
      PrintWriter out=null;
  try {
   out = response.getWriter();
   message=StringEscapeUtils.escapeHtml(message);
   message=message.replace("'","");
   String respuesta="{'isSuccessful':true,'message':'"+message+"'}";
   out.println(respuesta);
  } 
  catch (IOException e) {
   // TODO Auto-generated catch block
   System.out.println("Error al generar respuesta ajax "+e);
  }catch(Exception e){
   // TODO Auto-generated catch block
   System.out.println("Error al generar respuesta ajax "+e);
  }
  
    
   out.flush();
        //request.setAttribute("message", message);

        return null;
    }

lunes, 15 de octubre de 2012

Fliz alternativa a cms

http://parse19.com/fizl lo que me gusta es que es bastante simple como para cuando tienes un sitio muy sencillo.

El cms de los desarrolladores

El cms de los desarrolladores http://www.getnocms.com/

Restaurar Dump MYSQL en XAMPP Win 7

Simplemente hay que moverse con la linea de comandos cmd. Y meterse en los directorios con cd Y ejecutar la siguien linea En este caso -u es el usuario toor y el -p es el password root

domingo, 23 de septiembre de 2012

Caballos globalizados

A Ojo del amo engorda el caballo, pues no los caballos comen aunque el amo no este, el amo debe tener el control sobre el caballo, me recordo al auriga y las virtudes támbien comparado en la biblia con el domingo de ramos. Los caballos no montan a los amos, sino es al reves.

Mi versión de ojo del amo globalizada.

La competencia es bastante alta en estos días, imaginemoslo desde el punto de vista que es un concurso en el cual existe un caballo que probará distintos alimentos y el alimento que le gusta más tendra derecho de abastecer un rancho con 500 caballos, cual eligirá?.

La primera pesona A: piensa en que el conoce algo de caballos, ha tenido algunos, y decide invertir algunos pesos en alfalfa.
La segunda pesona llamada B: no ha tenido caballos tiene toros, así que prepara alimento para toro y se lo pone al caballo.
La tercera persona C tiene 7 años trabajando con caballos: Así que prepara el alimento que más les gusta.
La cuarta D no sabe nada sobre caballos: así que meses antes visita granjas, entra a trabajar limpiando caballerizas pone especial atención en como son alimentados los caballos, cambia de granjas y hace un estudio sobre razas de caballos alimentos, compra libros de caballos, lee artículos sobre caballos, entra en un nivel espiritual de volverse uno con el caballo(jajaja), de respirar y sentir lo que el caballo siente.

Cual gana, tu lo decides.

Las más altas probabilidades las tienen los individuos  C y D. Parami ganaría el individuo D.

Alguna vez mi maestra de calidad me decía "identifica al mejor, copia al mejor supera al mejor".

El caballo significan los clientes, las personas son los proveedores de un producto o servicio. El alimento es el servicio o aquello que los diferencia de la competencia, es simple como dice algo del libro de los 7 hábitos de la gente altamente efectivamente empatizar ponerse en el lugar del otro, buscar una relación de ganar-ganar.

Existen muchos factores que determinan el crecimiento de un negocio, como son: un sistema de negocio( ejemplo Mcdonalds sus hamburguesas no son muy buenas sin embargo su sistema funciona), vender experiencias, cualquier estilista puede cortar el cabello, pero venderte una experiencia no cualquiera, lo veo yo cuando me corto el cabello en una peluquería en particular me resulta relajante.

Ya por último les recomiendo leer el libro la trampa del trabajo.

Sobre libros y busquedas

Bueno antes de dar una pequeña reseña de este libro, pues este post lo puse más que nada porque mi comadrita me dijo que no había escrito algo sobre este libro.

Este libro lo adquiri por una razón, y es simple,  alguna vez uno de mis tios me dijo que si queria ser barrendero tendría que ser el mejor en lo que hiciera, mi hermana alguna vez me presto un libro de éxito al cual no le encontre mucho sentido, ya que la palabrá éxito tiene un significado muy diferente para cada quien y es simple, saber lo que se quiere, por ejemplo si quiero ser millonario, tengo que comprar libros sobre dinero. Secretos de la mente millonaria habla de como atacar el problema de raíz, te habla sobre el patrón del dinero. Y bueno que pasa si tengo otros patrones arraigados, por ejemplo, patrones sobre la salud, el manejo de la empresa, religión, política, etc.

Pues es simple si quiero tener éxito en una empresa, tengo que leer libros sobre empresas,  alguna vez leí una reseña sobre el libro del pájaro azul la cual decía que uno niños salían a buscar un pájaro azul despues de todo lo que pasaron el pájaro siempre se encontro en su casa. Alguna idea muy arraigada que yo tenía, mi papá toda la vida me decía "a ojo del amo engorda el caballo". Una idea que le compre durante mucho tiempo, hoy me doy cuenta que los caballos comen mientras tengan comida, ayer lo comprobe en la casa de mis suegros, el mito del emprendedor es un libro que tuve en mis narices, en Tecmilenio me enseñaron algunos puntos importantes y realmente no le puse mucha atención, despúes de bastantes años decidí leerlo, la idea principal dicha con mis palabras es "Trabajar para que tu negocio trabaje para ti o funcione sin ti", algunas ideas principales.

El autor afirma que las empresas más pequeñas comienzan cuando alguien, - por lo general una persona que cae en la categoría de “técnico”-,  tiene un “ataque empresarial” y decide que él o ella ya no puede trabajar como empleado

Habla sobre las etapas del negocio, aquí pondré una mini reseña.

Y así, después de seis meses o seis años, lo inevitable pasa. Ya no quieres
regresar ahí. Y tu esposa te dice: Pues si no vas tú, ¿Quién va?
Y repentinamente te das cuenta de tu verdadera condición.
¡Que no posees un negocio – posees un trabajo!
Y lo peor aún, posees el peor trabajo de todos.
No puedes cerrar cuando quieras porque si cierras, no te paga.
No puedes irte cuando quieras porque si te vas, nadie hace el trabajo. 
No puedes venderlo cuando quieras porqué, ¿Quién va a querer comprar un
trabajo?
  En este punto sientes la desesperación y el cinismo que casi cualquiera dueño de
un negocio pequeño siente.
  En el que tu gran sueño, aunque sea pequeño, se ha ido. Y con él, cualquier
deseo de mantenerse ocupado, ocupado, ocupado.
  Ya no lavas las ventanas.
  Ya no barres el piso.
  Los clientes se vuelven un problema en lugar de una oportunidad. Porque si
alguien compra algo, vas a tener que hacer el trabajo.
  Tus estándares de vestimenta comienzan a deteriorarse. 
  El anuncio de la entrada comienza a despintarse.
  Y ya no te importa.
  La tiranía de la rutina.
  Finalmente, cierras las puertas. Ya no hay nada que te mantenga ahí.
  Y es entendible.
  Tu  negocio,  una  vez  la  brillante  promesa  de  tu  vida,  se  ha  convertido
gradualmente en una morgue de sueños muertos.

El libro es altamente recomendable, espero puedan leerlo.

miércoles, 5 de septiembre de 2012

Poner el pie de una página hasta abajo con jqueryMobile

Aquí algunas formas
[data-role=page]{height: 100% !important; position:relative !important;}
[data-role=footer]{bottom:0; position:absolute !important; top: auto !important; width:100%;}  
$(document).bind("mobileinit", function(){
  $.mobile.touchOverflowEnabled = true;
});

viernes, 24 de agosto de 2012

Busqueda de fecha Mysql

Ahora si la forma más correcta de buscar una fecha en Mysql es la siguiente: Donde el date sirve para cortar la fecha y la comparación no la haga contra milisegundos, segundos, etc.
SELECT FechaTramite
          FROM
    tablaFechas
     WHERE
      DATE(FechaTramite) = str_to_date('31/01/2012', '%d/%m/%Y')

viernes, 17 de agosto de 2012

Código que puedes necesitar para un reporte dinamico en Mysql

Tablas temporales que se creen al vuelo.

CREATE TEMPORARY TABLE tuzo_report
SELECT d.id, d.name
FROM tuzos d
INNER JOIN legs l ON l.dog_id=d.id
INNER JOIN nails n ON n.leg_id=l.id
GROUP BY d.id
HAVING MIN(n.last_clipped) < DATE_SUB(NOW(), INTERVAL 1 MONTH);
 
Concatenar variables
 
select person_id, group_concat(hobbies separator ', ')
from peoples_hobbies group by person_id; 
 
SELECT GROUP_CONCAT(DISTINCT CONCAT("`",usuario,"`") SEPARATOR "+") 
INTO @sumaVertical
FROM X
Este caracter ` identifica las columnas aunque tengan espacios.

Pivotear Tablas.

 SELECT
        SUM(CASE WHEN Enero THEN ROUND(Enero,2) END)Enero,
        SUM(CASE WHEN Febrero THEN ROUND(Febrero,2) END)Febrero,
        SUM(CASE WHEN Marzo THEN ROUND(Marzo,2) END)Marzo,
        SUM(CASE WHEN Abril THEN ROUND(Abril,2) END)Abril,
        SUM(CASE WHEN Mayo THEN ROUND(Mayo,2) END)Mayo,
        SUM(CASE WHEN Junio THEN ROUND(Junio,2) END)Junio,
        SUM(CASE WHEN Julio THEN ROUND(Julio,2) END)Julio,
        SUM(CASE WHEN Agosto THEN ROUND(Agosto,2) END)Agosto,
        SUM(CASE WHEN Septiembre THEN ROUND(Septiembre,2) END)Septiembre,
        SUM(CASE WHEN Octubre THEN ROUND(Octubre,2) END)Octubre,
        SUM(CASE WHEN Noviembre THEN ROUND(Noviembre,2) END)Noviembre,
        SUM(CASE WHEN Diciembre THEN ROUND(Diciembre,2) END)Diciembre,
FROM meses

Aumentar los carateres de concatenamiento de la Sesion

SET SESSION group_concat_max_len = 1000000;

Sin Sesión tomado de stackoverflow. Thank you ZeWaren :).

CREATE TABLE some_table (
  field1 int(11) NOT NULL AUTO_INCREMENT,
  field2 varchar(10) NOT NULL,
  field3 varchar(10) NOT NULL,
  PRIMARY KEY (`field1`)
);
INSERT INTO `some_table` (field1, field2, field3) VALUES
(1, 'text one', 'foo'),
(2, 'text two', 'bar'),
(3, 'text three', 'data'),
(4, 'text four', 'magic');

SELECT resultFROM   (SELECT @result := '',
               (SELECT result
                FROM   (SELECT @result := CONCAT_WS(';', @result, field2) AS result,
                               LENGTH(@result)                            AS blength
                        FROM   some_table
                        ORDER  BY blength DESC
                        LIMIT  1) AS sub1) AS result) AS sub2;
 
Sistaxis WITH ROLLUP para sacar totales.
 
Ejecutar las cadenas dinamicas
 
  PREPARE stmt FROM @sqlX;/*El smt es la cadena con que arme el select y el sqlx el from*/
  o 
  PREPARE stmt;
  EXECUTE stmt;
  DEALLOCATE PREPARE stmt;  
 

Obtener el texto dentro de una etiqueta option jquery

$("#idSelect  option:selected").text();

Entidades html formatear con jquery

Algunas veces es necesario trabajar con cadenas formateadas a html, pero dentro del script te regresa html entities, con este código sepuede formatear.

$('<textarea/>').html(shtml).val()

Plugins jquery Excel

Dejo estas dos páginas de dos excelentes plugins.

http://warpech.github.com/jquery-handsontable/

http://visop-dev.com/Project+jQuery.sheet

miércoles, 8 de agosto de 2012

Error hibernate No Dialect mapping for JDBC type: -1 mysql

Pues este error me salía aunque marca algo de configuración no lo es siempre, lo que pasa que los campos que estaba mapeando en Mysql eran tipo Text, lo resolví de la siguiente forma. hibernate No Dialect mapping for JDBC type: -1 mysql
 String query="SELECT * FROM tabla";

      List<ConflictoDetalle> listaConflictoDetalle=getSession().createSQLQuery(query).addScalar("campo1", Hibernate.STRING)
    .addScalar("campo2",Hibernate.STRING)
    .addScalar("campo3",Hibernate.STRING)
    .addScalar("campo4",Hibernate.STRING)
    .setResultTransformer(Transformers.aliasToBean(ClaseVO.class)).list();

martes, 10 de julio de 2012

Sobreescribir el valor de un style de un elemento css

Veamos un ejemplo


<style>
a{
 background-color: yellow;
}
</style>

<body>
<a style="background-color: red">a</a>
</body>



Ahora si le agregamos la etiqueta important


<style>
a{
 background-color: yellow !important;
}
</style>

<body>
<a style="background-color: red">a</a>
</body>

En el primer ejemplo el elemento a es de color rojo, cuando agregamos important el color es sobreescrito por color amarillo.

Reproductor Mp3 en java

Bueno este ejemplito lo saque de http://lineadecodigo.com/java/reproducir-musica-por-java/ , así que mejor visiten el enlace.

jueves, 28 de junio de 2012

5 libros gratis de java

http://www.mkyong.com/featured/top-5-free-java-ebooks/

Jquery++

Esto lo saque del siguiente post http://www.ejugo.net/?p=56.

El proyecto se encuentra aquí y pues las ventajas son bastantes a mi me gusto bastante la parte de integración jQuery.cookie.

Algunos códigos utiles para cuando trabajas rutas de imagenes

System.getProperty("com.sun.aas.instanceRoot"); //Util para cuando trabajas con glassfish y tienes imagenes como por ejemplo fotos, estas no pueden estar dentro del proyecto porque cada que subes el war, elimine los directorios, entonces lo comun es ponerlas dentro del dominio en glassfish te devuelve algo así glassfish/domains/nombreDominio esto ayuda cundo no tienes alguna parte de ambientación.


String ruta=request.getSession().getServletContext().getRealPath("/").//Struts
Este codigo te trae la ruta de donde se encuentra la aplicacion

Struts 1.x json ajax

 Este pedazo de código retorna un json.


HashMap hm = new HashMap();
hm.put("url","www.google.com");
response.addHeader("Content-Type", "application/json");//Navegadores nuevos

//Navegadores viejos o como iexplorer     response.addHeader("Content-Type", "text/html; charset=utf-8");
 try {
            response.getOutputStream().write(json.toString().getBytes("UTF-8"));
            response.getOutputStream().flush();
        } catch (UnsupportedEncodingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
return mapping.findForward("success");
/*El return success puede ser hacia la misma pagina o tambien puede ser null*/       

Redirecciones en javascript

 
// es como un HTTP redirect, este es mejor porque no pone la pagina en la sesion
//del historial 
window.location.replace("http://google.com");
// es como dar un click en un link
window.location.href = "http://google.com";

Plugin para letras jquery

Encontre este útil plugin para transformacion de letras http://jquerybyexample.blogspot.com/2011/12/jquery-plugin-for-uppercase-lowercase.html

miércoles, 13 de junio de 2012

String a HTML en Java

Afortunadamente ya existe una librería que realiza este trabajo. StringEscapeUtils.

 http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/StringEscapeUtils.html


String caracteres = "á é í ó ú ü ñ ½" ; 
 
  System.out.println("Texto Original");
  System.out.println(caracteres);

   System.out.println("Escape en HTML");
   System.out.println(StringEscapeUtils.escapeHtml(caracteres));

   System.out.println("Escape en Javascript");
   System.out.println(StringEscapeUtils.escapeJavaScript(caracteres));

   System.out.println("Escape en xml");
   System.out.println(StringEscapeUtils.escapeXml(caracteres));


El resultado de ejecutar este código es:
     Texto Original
     á é í ó ú ü ñ ½


Escape en HTML
     &aacute; &eacute; &iacute; &oacute; &uacute; &uuml; &ntilde; &frac12;

     Escape en Javascript
     u00E1 u00E9 u00ED u00F3 u00FA u00FC u00F1 u00BD

     Escape en xml
     &#225; &#233; &#237; &#243; &#250; &#252; &#241; &#189;

Consulta sql a clase o entidad en Hibernate

Algunas veces se tiene una consulta SQL y digamos que se quiere mapear directo a 
la clase. 
 
sess.createSQLQuery("SELECT * FROM DOGS").addEntity(DOG.class);
sess.createSQLQuery("SELECT ID, PEC_NAME FROM DOGS").addEntity(DOG.class);

martes, 12 de junio de 2012

Fecha mayor, fecha menor o igual en Mysql

No es la mejor solución pero si llevas algo de prisa te puede servir.

/*Regresa una fecha igual*/
select * from tabla_fechas
where DATEDIFF(fech_hra_operacion,STR_TO_DATE('19/05/2010','%d/%m/%Y'))=0

cambiar el igual por mayor o menor según se requiera

jueves, 7 de junio de 2012

Formateo de fechas en java

Ya hay muchos post sobre esto pero bueno, aquí un ejemplo.
 
 
SimpleDateFormat formateador = new SimpleDateFormat("EEEEEEEEE dd 'de' MMMMM 'de' yyyy",new Locale("es"));
System.out.println(formateador.format(new Date()));
 
Links consultados.
 
http://www.localeplanet.com/java/es-MX/index.html 

http://chuwiki.chuidiang.org/index.php?title=SimpleDateFormat

Enviar correo(e mail) con imagen en línea o embebida con spring JAVA

Pues a pesar, de que en el proyecto que trabajo ya existe un framework con clases que envían correos, no existe un método que me permita enviar imagenes en línea, así que pense en usar javamail, pero aprovechando que uso spring encontre una forma mucho más fácil. En este link http://static.springsource.org/spring/docs/1.2.x/reference/mail.html dan una explicación. Hice una clase muy generica que se podría mejorar bastante pero por el momento puede servir de base para algunos proyectos. De hecho algunos de mis compañeros  usarán mi clase como base y le agregarán bastantes mejoras gg.

Si usas Spring configura tu config.properties.

mail.smtpHost=127.0.0.1
mail.smtpPort=25
mail.smtpUsername=userSMT9
mail.smtpPassword=12345
mail.charSet=ISO-8859-1

Opcionalmente si quieres evitarte la carga del properties puedes configurar el application-context.xml

    <bean id="mailUtil" class=" com.util.MailUtil">
        <property
            name="useSSL"
            value="${mail.useSSL}" />
        <property
            name="smtpHost"
            value="${mail.smtpHost}" />
        <property
            name="smtpPort"
            value="${mail.smtpPort}" />
        <property
            name="smtpUsername"
            value="${mail.smtpUsername}" />
        <property
            name="smtpPassword"
            value="${mail.smtpPassword}" />
    </bean>

//Esta de abajo es la clase
package com.util;

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.springframework.mail.javamail.JavaMailSenderImpl;
import org.springframework.mail.javamail.MimeMessageHelper;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;




@SuppressWarnings("unchecked")
public class MailUtil {
   
    private boolean useSSL = false;
    private String smtpHost;
    private int smtpPort = 25;
    private String smtpUsername;
    private String smtpPassword;
    private String charSet = "ISO-8859-1";
   
    public boolean isUseSSL() {
        return useSSL;
    }


    public void setUseSSL(boolean useSSL) {
        this.useSSL = useSSL;
    }


    public String getSmtpHost() {
        return smtpHost;
    }


    public void setSmtpHost(String smtpHost) {
        this.smtpHost = smtpHost;
    }


    public int getSmtpPort() {
        return smtpPort;
    }


    public void setSmtpPort(int smtpPort) {
        this.smtpPort = smtpPort;
    }


    public String getSmtpUsername() {
        return smtpUsername;
    }


    public void setSmtpUsername(String smtpUsername) {
        this.smtpUsername = smtpUsername;
    }


    public String getSmtpPassword() {
        return smtpPassword;
    }


    public void setSmtpPassword(String smtpPassword) {
        this.smtpPassword = smtpPassword;
    }


    public String getCharSet() {
        return charSet;
    }


    public void setCharSet(String charSet) {
        this.charSet = charSet;
    }
   
   
    public void sendMail(String from,String to, String html,String subject,HashMap mapaImagenes){
         JavaMailSenderImpl sender = new JavaMailSenderImpl();
         sender.setHost(this.smtpHost);
         sender.setPort(this.smtpPort);
         sender.setUsername(this.smtpUsername);
         sender.setPassword(this.smtpPassword);
         MimeMessage message = sender.createMimeMessage();
         try {
             MimeMessageHelper helper = new MimeMessageHelper(message, true);
             helper.setFrom(from);
             helper.setTo(to);
             helper.setSubject(subject);
             helper.setText(html,true);
             Iterator it = mapaImagenes.entrySet().iterator();
             while (it.hasNext()) {
                  Map.Entry e = (Map.Entry)it.next();
                  Resource resource=new ClassPathResource(e.getValue().toString());
                  helper.addInline(e.getKey().toString(), resource);
             }
           
           
             sender.send(message);
        } catch (MessagingException e) {
            // TODO Auto-generated catch block agregar log
            e.printStackTrace();
        }
    };
}

La forma de uso sería así.
//Forma de uso
 HashMap mapaIdentificador = new HashMap();
        mapaIdentificador.put("identifier1234","resources/mail/header.jpg");// la imagen esta en el package resources
        MailUtil mailUtil= new MailUtil();
  mailUtil.sendMail("administrador@lafabricadesoftware.com","usuario@lafabricadesoftware.com",
 "<html><body><img src='cid:identifier1234'></body></html>"
, "hola Mundo", mapaIdentificador);

martes, 5 de junio de 2012

Eliminado lógico en hibernate

Entendemos por eliminado lógico cuando de una tabla solo se cambia el status del registro, en el proyecto que estoy trabajando se mapean las tablas en xml no con anotaciones.

 < class name="mx.modelo.persona" table="persona" where="eliminado <> 1" >

Ojo si te marca un error en el xml hay que transformar el <>
a & lt;& gt; pero sin espacios.
de esta forma discriminará los registros con el status eliminado.

Si usas anotaciones tal vez este post te sea útil http://featurenotbug.com/2009/07/soft-deletes-using-hibernate-annotations/

sábado, 2 de junio de 2012

Evitar que hibernate mapee un atributo de una clase

Pues a veces pasa que tienes un atributo que no quieres que hibernate te mapee, para esto puedes usar la anotacion
@Transient

Inventos locos, Jardín en el metro del DF

La verdad es que con este invento pareciera que fume algo extraño, pero me latería que hubiera un jardín dentro del metro, un microjardin con pequeños árboles un estilo oriental aca medio locochon, con una fuente, creo que ayudaría al desestres de los usuarios.

Inventos locos, banda que cambia las estaciones, en el metrobus

Pues esta idea me surgió ya que antes viajaba una ruta desde el sur hasta al centro de la ciudad, entonces me di cuenta que algunas veces llegaban a subirse gente extranjera por lo que a la hora de ver las estaciones del metrobus se confundían, esto es más que nada debido a que el metrobus da la vuelta y las estaciones no se ven en sentido inverso, de forma que los carteles de las estaciones del metrobus deberían de rotar, pues a mi se me ocurrio que se podrían poner un par de palos como de plastico y que el metrobus al dar vuelta tuviera un mecanismo o un boton que cambie o inverta los carteles de las estaciones, serían como dos microrodillos de tortillería que moverían los letreros de las estaciones.

Inventos locos, playera de facebook

Y que tal una playera, con leds que se pueda conectar por Bluetooth o Wifi a tu cel .
Y que encienda cada las luces cada que te llegue una notificación o un like.

Inventos locos, chikle de cerveza o de tequila

Si combinamos un chikle de cerveza o de tequila estaria genial, uno que te alegrar un poquitin tu vida, para esos días de éstres aunque no estaría nada mal uno de pulque(me encanta), y estaría bien tener igual chikles de broma que te dejen un aliento a dragon, estaría super divertido

Nueva Sección inventos locos


Pues bueno, abró esta nueva sección donde puedo poner todas las ideas loquitas que se me vienen a la mente, alguna vez hicieron un concurso de inventos en mi clase y pues que creen, que ganó mi invento, un poco exotico, que era un escritorio de vidrio transparente, adentro del escritorio tenia peces, y el escritorio contaba con una parrilla por eso de que si se te antojaba un pescadito jajajaja, espero que les guste.

 

De Tareas y Ventas

Esta semana me dijeron 2 frases.

La primera dice más o menos así.

Tarea ordenada no verificada se la lleva la chingada.

Ventas:Trata a un cliente como si tu fueras el cliente.

miércoles, 30 de mayo de 2012

Tablas o SQL a clases con hibernate DTO, VO

En esta ocasión les mostraré 2 formas de ejecutar sentencias sql y pasarlas a clases, sin los tipícos mapeos de anotaciones o xml.
Todo esto con el fin de evitarte usar ciclos para los respectivos llenados.

La primera forma es por entidad(una clase ya mapeada)

sess.createSQLQuery("SELECT * FROM DOGS").addEntity(Dog.class);
 
La segunda es llamada entidades no administradas, 
por ejemplo si tienes un VO o un DTO.
 
        
sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM DOGS")
.setResultTransformer(Transformers.aliasToBean(DogVO.class))
 
 
y dejo el link por si quieres saber más acerca de este tema.
 
http://docs.jboss.org/hibernate/orm/3.6/reference/es-ES/html/querysql.html 

domingo, 27 de mayo de 2012

Ay si, ay si Generador de Memes


En esta ocasión les traigo, una herramienta bastante divertida, es un generador de memes y los pueden generar en el siguiente link. http://www.ragemaker.net/ ya esta muy de moda ponerlos en anuncios de publicidad, úsalos como quieras



lunes, 21 de mayo de 2012

Libreria para jquery mas facil

Buscando un property grid me encontre con esta chulada de librería para jquery me gustó mas que el jqueryui, el nombre de la librería es jquery easy ui la encuentras en http://www.jeasyui.com

sábado, 19 de mayo de 2012

¿Libros que cambian vidas?

Hace unos días ocurrió el deceso de un escritor famoso, llamado Carlos Fuentes,  y oí en el noticiero una frase que el dijo que decía que al final de cuentas el lector es el que decide, el final de un libro, me quede pensando bastante en lo que dijo, aunque no he leído ningún libro de él, espero leer alguno, pero volvamos al punto e al final de cuentas, el lector es el que decide, el final de un libro.

Así que regrese algunos días en el pasado y recorde un libro, no se si este libro realizó un cambio en mi vida de 360 grados, pero efectivamente yo fui el que decidió el final del libro, decidí ponerlo en práctica, la verdad es que este libro me ha ayudado bastante y merece la pena mencionarlo en el blog, aunque desafortunadamente lo preste y me lo extraviaron es uno de esos libros que compras y se pagan hasta 3 veces más solos.
Herramientas como el pensamiento Base 0, la parte de administración del tiempo me ayudaron bastante.
Por si no se ve la imagen el libro es MAXIMA EFICACIA: UN SISTEMA INTEGRAL DE PLANIFICACION QUE LE PERM ITIRA POTENCIAR TODAS SUS CAPACIDADES - BRIAN TRACY.




miércoles, 9 de mayo de 2012

Cambios en el DOM detectar ajax, Jquery ajax y dojo

Pues hace unos días me encontre con un componente grid ya hecho, este componente básicamente es un grid que realiza peticiones ajax y recibe los registros en json,
el problema aqui es que como es ajax manejado por dojo y no es transparente porque esta dentro de muchos componentes, con jquery no podia realizar una validación, entonces se me ocurrieron 2 cosas, buscar un plugin basado en el patrón de
diseño observer encontre esta pagina un plugin para jquery https://github.com/kilhage/jquery-observe y encontre esta otra sobre patrones de diseño en jquery,
http://www.etnassoft.com/2011/05/26/patrones-de-diseno-utilizados-por-jquery/, pero no me convencía usar un plugin, así que encontre la forma de atar un listener al div
y cuando este cambie por las peticiones ajax yo realizo una acción

    $("#divconContenido").bind("DOMSubtreeModified", function() {
       //acciones
    });
   
Al parecer no funciona en Opera ni en IExplorer 9
checa la compatibilidad http://help.dottoro.com/ljrmcldi.php
Con javascript puro un ejemplo
http://jsfiddle.net/timdown/GB6Rz/

jueves, 26 de abril de 2012

Editor javascript en la nube

Con eso de que las nubes estan de moda les dejo un link a un magnifico editor javascript http://jsfiddle.net/

Checar un radio por codigo jquery

  $('input:radio[name=nombredelradio]').filter('[value=1]').attr('checked', true);

Función de envío dinámica en DOJO

 Esta pequeña funcion maneja peticiones ajax en dojo(aunque me gusta + jquery algunas veces hay que adaptarse a las herramientas del cliente), espero les sirva como a mí, aunque me tarde un poco en hacerla, me ha sido de gran utilidad, Ojo en javascript puedes enviar una función como parámetro.

var contenido = {nombre:"Juan"};// puede ser un objeto
            var contenido="idform";//puede ser el id de un formulario
               
           Parametros url string, contenido string o object, success function, error function
            function manejaPeticiones(url,contenido,success, errors){
                if(!dojo.isString(contenido))//Evaluo si no es una cadena
                dojo.xhrPost({url:url,contentType: "application/x-www-form-urlencoded; charset=utf-8",content:contenido,handleAs: "json",load:success,error: errors});
                else
                dojo.xhrPost({url:url,contentType: "application/x-www-form-urlencoded; charset=utf-8",form:content,handleAs: "json",load:success,error:errors});

Libreria en java para el manejo de documentos office

Bueno en esta ocación les dejo un lik http://poi.apache.org/ por si necesitas manejar disitintos tipos de archivo, doc, xls, espero les sirva.

lunes, 16 de abril de 2012

Obtener valor radio, checkbox jquery

Empezamos con el radio, esta parte iría en el ready $('[name="frutas"]').click(function(){ alert($('[name="frutas"]:checked').val()); });

En el body tenemos

<input name="frutas" type="radio" value="Melon" /> Melon <input checked="checked" name="frutas" type="radio" value="Sandia" />Sandia

Ahora con el checkbox

 $("#idchkbox").click(function(){if($('#idchkbox').is(':checked')){ alert("checado"); } });


en el html <input id="idchkbox" type="checkbox" />

jueves, 12 de abril de 2012

Tips para crear un logo

Y bueno ya entrados con el post anterior, que aprendí de logos, pues segun la revista entrepreneur un logo debe tener como máximo 4 colores los colores ideales para un logo son 2 o 3, y bueno no puedo poner todo el contenido porque me pueden acusar de piratería jajaj, pero de igual forma menciona el significado de los colores y la tipografía que se usará, en lo personal soy fan de los stickers, y te podría decir que si tu logo lo puedes imprimir como un stiker, estas haciendo un buen logo, el logo no siempre debe ser algo, a lo que se dedique tu empresa, en una ocasión un familiar me decía que si tienes una zapatería por ejemplo, tu logo debe ser un zapato, yo creo que no, el logo representa la esencia de tu empresa, así como la misión de la empresa misma. Bueno ya por último quiero hablarte de un excelente libro para cuando inicias tu changarro, yo tengo poco tiempo con un micronegocio y estoy obteniendo resultados, superiores a los esperados, este libro es el mejor compañero, cuando inicias tu negocio, y pues te habla de algunos detalles como por ejemplo el nombre y te da tips, si el nombre ya esta registrado en la web, pensando más que nada en los usuarios de tu producto o servicio. El libro se llama HIPBUM. CREANDO UNA EMPRESA ALTAMENTE EXITOSA y creeme que si lo sigues paso a paso el libro se paga solito. 




Por otra parte se que ya casi no he puesto nada de programación pero próximamente estaré posteando mis nuevas aventuras con un framework creado por una compañía de software muy famosa aquí en México, basicamente es spring con struts, con hibernate, con jquery y dojo.

A se me olvidaba esta de moda decir de hecho, que es algo así como para que alguien me crea, si necesito que alguien me crea es tal vez porque miento mucho jajaja, así que diré de hecho todo esto que te escribo esta comprobado, jajajaja.

Notese que no escribir o decir de hecho, no afecta la oración jajaja :).
Un millon de gracias a todos los que visitan mi blog.