martes 12 de mayo de 2009

Obteniendo los caracteres invalidos a partir de un RegExp

Hoy, tuve que hacer una función en Javascript que analiza una cadena y retorna que fragmentos de la cadena son inválidos o no son compatibles con la expresión regular dada.

Les comparto la función:


function extractBadCharsInRegexp(regexp, str, whiteSpaceLabel, errorLabel){
var splitResult = str.split(regexp);
var resultArray = [];

//limpio el array de cadenas vacias
for(var i = 0; i < splitResult.length; i++){
var tmp = splitResult[i];
if(tmp.length > 0){
resultArray.push(tmp);
}
}
//si el nuevo array tiene elementos hay un error
if(resultArray.length > 0){
var result = resultArray.join(",")
var nowhiteResult = result.replace(/\s/g, '');
if(nowhiteResult != result){
alert(whiteSpaceLabel);
}
//muestro mensaje si hay caracteres distintos a espacio
if(nowhiteResult.replace(',', '').length > 0){
alert([errorLabel, ' [', nowhiteResult, "]"].join(''));
}
}
return resultArray;
}

jueves 16 de abril de 2009

Concejos para vencer la Procrastinación

La Procrastincación es la acción (o arte cultivada) de postergar actividades o situaciones que uno debe atender, por otras situaciones más irrelevantes y agradables.

Thinkwasabi nos comparte la siguiente lista para combatir la procrastinación:

  1. Valora lo que ganaras a terminar esa tarea
  2. Piensa en que retrasarlo va a ser peor
  3. Si es una tarea grande, divídela en pequeñas partes
  4. Míralo como un reto directo a tu fortaleza y determinación
  5. Corta las mentiras, no te engañes
  6. Piensa en los demás, a veces son quienes pagan cara tu Procrastinación
  7. Generalmente luego "no es para tanto"
  8. Aplica la regla hazlo ahora
  9. Si es una tarea compleja, no busques la perfección a la primera
  10. Si utilizas el GTD ojo con el "algún día"
  11. Piensa que si vences serás un "mejor profesional"
  12. Si te han asignado una tarea que otro debía hacer, no culpes al mensajero
  13. Si te vas a poner a ello, corta cualquier distracción
  14. "Es que es mucho, no se por donde empezar", divide la tarea en partes y hazlo
  15. Aplica la regla de los 2 minutos del GTD a las tareas que sabes que las puedes completar rápido
  16. Hazlo para evitar el estrés y la frustración
  17. Encuentra el lado positivo de esa tarea
  18. Elimina todo lo demás de tu cabeza, sólo cuenta eso
  19. Piensa que destruye tu Organización y Productividad
  20. Enfréntate a la Procrastinación que viene del miedo
  21. ¿Necesitas un estimulo?, recurre a tu canción favorita.
  22. Saborea el momento de la victoria

La confianza en los equipos de desarrollo

Les dejo este articulo sobre la confianza en los equipos de trabajo

Lo primero que se necesita en el entorno laboral es la confianza profesional. La confianza profesional nos dice "Yo confio que usted es competente para hacer el trabajo, que va a compatir información relevante, y que tiene buenas intenciones para el equipo". Es decir, estamos hablando de la comunicación, el compromiso, y la competencia.

5 formas para ganarse la confianza de un equipo

El articulo referencia cinco prácticas interesantes que nos ayudan a mantener confianza en un equipo de trabajo o a ganarla:

  1. Tratar los temas directamente
  2. Compartir información relevante
  3. Cumplir los compromisos o dar aviso temprano de que no se puede
  4. Decir "No" cuando queremos decir no
  5. Mostrar lo que sabemos y lo que no sabemos

jueves 26 de febrero de 2009

Tip: Como extraer los caracteres de un archivo pdf

Les dejo este tipo acerca de como extraer los caracteres de un archivo pdf.

import com.lowagie.text.pdf.PRTokeniser;
import com.lowagie.text.pdf.PdfReader;
import java.io.InputStream;
...
InputStream stream = ...;
PdfReader pdfReader = new PdfReader(stream);
try{
int numberOfPages = pdfReader.getNumberOfPages();
for(int page = 1; page <= numberOfPages; page++){
PRTokeniser tokeniser = new PRTokeniser(pdfReader.getPageContent(page));
while(tokeniser.nextToken()){
if (tokeniser.getTokenType() == PRTokeniser.TK_STRING) {
System.out.println("Pagina: " + page);
System.out.println("Parrafo: " + tokeniser.getStringValue());
System.out.println("---------------------------------------");
}
}
}
}finally{
pdfReader.close();
}

viernes 13 de febrero de 2009

El framework de aplicaciones Seam

Seams es un framework para construir aplicaciones de internet ricas en Java. Seam integra tecnologías tales como AJAX, JSF, JPA, EJB 3.0 y BPM dentro de una solución unificada y completa.

Seams ha sido diseñado desde el comienzo con el fin de eliminar complejidad en ambos nivels de arquitectura y APIs.

Algunas de las mejoras que Seam trae a la plataforma Java EE son:
  1. Eliminar los problemas de JSF que han sido el tema de incontables peleas
  2. Enmendar la comunicación entre JSF y componentes de negocio transaccionales
  3. Colapsar capas innecesarias
  4. Ofrece una solución para la administración de estado, desanimando el uso de arquitecturas sin estado.
  5. Administra el contexto de persistencia para evitar excepciones de inicialización peresoza en la vista y subsecuentes peticiones.
  6. Conecta varias vistas, con un flujo de páginas con estado
  7. Trae los procesos de negocio al mundo de las aplicaciones web
  8. Conecta mecanismos de autenticación y autorización basada en POJOs y soportados por JAAS.
  9. Provee un contenedor embebido para pruebas.

jueves 12 de febrero de 2009

Cuando puedo usar X característica en la Web

Html, Css, Javascript son las tecnologías por excelencia en el mundillo de la Web, pero la plataforma sobre la cual estas tecnologías juegan su papel no es muy estandar, estamos hablando de los navegadores web (IE, Firefox, Safari, WebKit, Opera, etc).

Navegando por la Web me he encontrado con este sitio When can I use ..., este sitio muestra tablas de compatibilidad de las características de las tecnologías HTML5, DOM, CSS3, CSS2, Canvas, etc; entre los distintos navegadores.

Transiciones con MooTools

Vamos a realizar una pequeña animación usando el framework para javascript Mootools

Primero empezamos con la página html de nuestra animación:
       .....
<div id="fxDiv" class="red">Click aquí para iniciar la animación</div>
.....
Crearemos una hoja de estilos anim.css, este archivo contiene la animación de rojo (.red) a azul (.blue).

#fxDiv {
padding: 5px;
position: absolute;
}

.red {
background-color: #f00;
left: 100px;
top: 100px;
border: 1px solid black;
}

.blue {
background-color: #00f;
left: 400px;
top: 200px;
width: 400px;
height: 400px;
border: 5px solid black;
}
Ahora el script que ejecuta la animación:

$("fxDiv").addEvent('click', function() {
var fx = new Fx.Morph($("fxDiv"),
{duration: 1000,
transition: Fx.Transitions.Sine.easeOut});
fx.start(".blue");
});
El objeto Fx.Morph recibe dos parámetros:
  1. Primero el elemento que se quiere animar, en este caso es un div
  2. Un objeto de opciones de configuración para la animación recibe varios propiedades, en este ejemplo especificamos la duración de la animación y que tipo de transición quiero para la animación. Aquí encuentras un ejemplo de las transiciones de MooTools
La página html final, vinculando los estilos y código javascript:
<!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=UTF-8">
<title>Tween en MooTools</title>
<link type="text/css" rel="stylesheet" href="css/anim.css"></link>
</head>
<body>
<div id="fxDiv" class="red">Click Aqui para iniciar la animación</div>
<script type="text/javascript" src="js/mootools-1.2.1-core-yc.js"></script>
<script type="text/javascript" src="js/anim.js"></script>
</body>
</html>
Este es un simple ejemplo de animaciones con MooTools, aquí puede ver muchos ejemplos más de esta gran libreria