La excelente respuesta de Wil Wheaton

Hace poco que retome el blog, vi que entre mis borradores estaba esta espectacular respuesta de Wil Wheaton, quien es famoso por interpretar a Wesley Crusher en Star Trek por allá en los años 90, y ahora por interpretarse a si mismo en la famosa serie The Big Bang Theory donde se interpreta a si mismo.

En una conferencia Comic Con en el año 2014, una niña le pregunta si cuando era pequeño lo llamaban nerd, su respuesta es algo que todos los niños y sus padres deberían ver, les dejo en video.

Anuncios

MapUtils de Apache Commons

Muchas veces nos toca obtener valores de una map por diversos motivos que no son objetivo de esta entrada, pero lo que si es cierto, que la lectura de estos datos pueden generar piezas de código complejas que se repiten por toda la aplicación como por ejemplo:

...
Object obj = map.get("key");
String keyValue = "default-value";
if(obj != null){
    keyValue = (String) obj;
}
...
...
String keyValue = (String) map.get("key");
if(keyValue == null){
    keyValue = "default-value";
}
...

pero con MapsUtils, podemos resumir todo ese código en:

...
String keyValue = MapUtils.getString(map, "key", "default-value");
...

corto, sencillo, sin repetir mucho código, menos código que probar ademas.

Entro otros métodos tenemos:

  • MapUtils.getBoolean();
  • MapUtils.getDouble();
  • MapUtils.getInteger();
  • MapUtils.isEmpty();

Anexo enlace a la librería: MapUtils de Apache Commons


Manejo de conversión de números en java – Apache Commons NumberUtils

Para retomar el blog, luego de varios de años, quería compartir un poco de mi aventura con java, iniciamos con la librería Apache Commons NumberUtils.

Muchas veces en nuestros proyectos nos encontramos con código de este estilo:

String tienda_id = "25";
Integer tiendaId = Integer.parseInt(tienda_id);

para el escenario anterior esta bien, no tendremos problemas, pero que pasa cuando tenemos un escenario como este:

String tienda_id = "25";
Integer tiendaId = Integer.parseInt(tienda_id);

tendríamos que manejar la excepción, con un código similar a este:

Integer tiendaId = null;
try {
    tiendaId = Integer.parseInt(tienda_id); //lanzará una excepción
} catch (NumberFormatException nfe) {
    tiendaId = 0;
}

imaginate que debes hacer esto en muchas partes de tu aplicación, te enfrentarias al escenario de tener código duplicado o de crear un método con propio que debes  mantener, hacer pruebas, etc, etc.

Pero con Apache Commons NumberUtils, esto esta solucionado, solo tienes que importar la librería (con maven o gradle o lo que uses) y al final se vería un código como este:

// en este caso devuelve default=0
Integer prodId = NumberUtils.toInt(tienda_id);
// si queremos devolver 25 o x
Integer prodId = NumberUtils.toInt(tienda_id, 25);

la librería ofrece otros métodos como:

  • toDouble
  • toFloat
  • toLong
  • muchos mas

solo te queda revisarla

referencias: Apache Commons NumberUtils


Implementar JQuery Gantt en nuestros proyectos

Hace poco en un proyecto me toco trabajar con un sistema de gestión de proyectos y era necesario mostrar un gráfico Gantt para mostrar las actividades del mismo, luego de una búsqueda intensiva en la web, encontramos la librería JQuery Gantt desarrollada por Roberto Bicchierai, aunque había opciones mas interesantes la mayoría son privativas, mientras que esta es Open Source.

img-jquery-gantt-view

Muestra de como se ve el Gráfico Gantt.

En mi caso me toco integrarlo con CodeIgniter (PHP), necesitaba persistir la misma en MySQL aquí que genere unos script SQL a partir de la documentación oficial, la cual aunque no es del todo clara funciona y permite realizar tus ajustes.

Los fuentes de este proyecto puedes encontrarlos en Github.

Para mostrar el gráfico, ejecuta el controlador Gantt la url debería ser algo así como: http//TUBASEURL/Gantt o   http//TUBASEURL/index.php/Gantt.

Si tienes problemas para visualizar algunas imágenes dentro de la vista gantt.php se encuentra la variable Javascript – GANTT_URL_RESOURCE ; colocar tu url, por defecto tiene base_url().

Si te gusta comparte, si necesitas ayuda con gusto puedo ayudarte.

Puedes consultar la documentación oficial aquí.


TimeStamp Javascript y PHP

Muchas veces cuando trabajamos con fechas y horas en nuestros diferentes proyectos webs, esto se vuelve un verdadero dolor de cabeza, y para complicarlo mas tenemos que manejar tiempo del lado del servidor (PHP) y por el lado del cliente (Javascript).

Resulta que Javascript maneja el timestamp en millisegundos, mientras que PHP, maneja el timestamp en segundos, ambos desde el tiempo Unix, veamos la diferencia de forma practica.

Tenemos como premisas que la hora del servidor es: 2014-03-20 18:22:51

Al ejecutar en PHP la función srttotime(‘now’); // el resultado es: 1395355971, cuando le enviamos este resultado Javascript, resulta que para el lenguaje faltan unos cuantos miles de milisegundos y para él, al ejecutar el siguiente código la fecha resultante es muy diferente, veamos: new Date(resultado); // resultado es: Fri Jan 16 1970 23:05:55 GMT-0430 (VET). Veamos el Ejemplo

Imagen

Bien, ¿Como resolvemos este comportamiento?, pues muy sencillo, podemos o multiplicar por mil (1000) el timestamp dado en javascript o en php (yo recomendaría hacerlo en PHP, ya que si estamos utilizando una librería JS de fechas, y esta recibe un JSON implicaría recorrer todo JSON en el cliente formatear y luego pasar el mismo, mientras que si lo hacemos con PHP, mientras construimos los arreglos estamos manejando los datos). Basta de texto y mas practica.

<?php

$milisegundos = strtotime(‘now’) * 1000;

$segundos = round($milisegundos/1000); //usamos round para redondear al segundo mas cercano.

?>

Imagen

Descargar el ejemplo aquí.


JQuery y elementos selects

Para muchos que utilizamos JQuery, muchas veces se nos tranca el serrucho a la hora de manejar elementos ‘selects’ en los formularios, ya que por una u otra razón necesitamos agregar o quitar valores específicos de los mismos, aunque muchos hemos resuelto este problema haciendo llamados vía ajax al servidor, esta quizás no sea la manera mas eficiente de hacerlo es allí donde una muy querida amiga me sugirió el siguiente  CheatSheet de JQuery para elementos selects. Es un archivo .pdf que cuenta con 6 paginas

JQuery-Selects-cheatsheet

Pagina 1 de JQuery-Selects-cheatsheet

Descarga el CheatSheet de JQuery para elementos selects

Si te gusto el CheatSheet compártelo con tus compañeros.

Articulo que publico el CheatSheet


SQL y Teoria de Conjuto

Muchas veces cuando estamos haciendo consultas SQL complejas olvidamos que la teoria de conjunto puede sernos muy util, es alli donde esta imagen dice mas que mil palabras

SQL Joins

SQL Joins

Estuve buscando el post original de esta imagen pero no lo encontré.

Agradecimiento es para mi pana JETTO, quien hace poco compartió esta imagen en un google+.

Los invito a compartir este post para que seamos muchos los que podamos beneficiarnos de tan gráfico ejemplo.