SAC

SAC

Thursday 29 May 2008

¡¡No te olvides!!

Comprometete a que Firefox 3 sea el software más descargado en 24 hs. La fundación Mozilla se ha propuesto batir un record Guiness con la descarga de Firefox 3. Más información en Spread Firefox

Download Day

Tuesday 20 May 2008

Sesiones y objetos en PHP

Hoy me encontré con un problema que venía produciendo bugs en aplicaciones y me resultaban bastante difíciles de encontrar. La situación es la siguiente:

Guardé en la sesión un objeto que era instancia de una class User definida por mí en la aplicación. No parecía haber problema alguno, al construir el objeto podía acceder a todos sus miembros, e incluso cuando dicho objeto estaba almacenado dentro de la sesión.

Pero en algunas páginas, noté que el objeto se perdía, existía el índice que correspondía al mismo en el array de sesión, pero no tenía sus miembros. Después de debuggear algún tiempo noté que este error era producido debido a que en esas páginas, estaba iniciando la sesión antes de incluir la clase de la que dichos objetos eran instancias.

Código Incorrecto

include("...");
...
session_start();
include("class.user.php");


Código Correcto
include("...");
...
include("class.user.php");

session_start();

La mejor forma de manejar estos casos es utilizando un framework o desarrollando la aplicación de manera que la sesión se inicie siempre al mismo momento en todas las páginas, y no debamos tener iniciarla manualmente. El código mostrado en los ejemplos anteriores tiene sólamente fines demostrativos.

Saturday 17 May 2008

Sitios varios...

Navegando un par de blogs de sitios hechos con layouts en CSS encontré varios desarrollos que me resultaron agradables y me gustaría compartirlos:

¡Usar expresiones regulares para emails!

Debido a mi incapacidad casi absoluta de memorizar expresiones regulares, o incluso de poder construirlas medianamente bien, generalmente me dedico a buscarlas en internet. En el caso de necesitar la validación de una dirección de correo electrónico (pongamos por caso, en javascript) si recurrimos a google nos encontramos con un catálogo de cosas que no se deben hacer.

Sin ir más lejos, en el sitio de w3cschools, la función que valida emails es este mamarracho:

function validate_email(field,alerttxt)
{
with (field)
{
apos=value.indexOf("@");
dotpos=value.lastIndexOf(".");
if (apos < 1||dotpos-apos > 2)
{alert(alerttxt);return false;}
else {return true;}
}
}

Esto no es una muy buena práctica, debido a que la única validación que hace es asegurarse de que haya un punto y una arroba en la dirección. y que eventualmente el punto esté luego de la arroba. Pero por ejemplo no se asegura de que no haya caracteres extraños en la dirección, o que la última parte del dominio sea correcta.

Yo propongo que todas las validaciones de emails se hagan con expresiones regulares, y para ello cuento con el siguiente código.


var Validate = {
'email': function (val){
var regex = new RegExp(/^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/);
return regex.test(val);
}

}

La forma de utilizarlo es la siguiente:

var email = "usuario@servidor.com";
if (!Validate.email(email)){
alert('la dirección: ' + email + ' no es válida.');
}

Friday 2 May 2008

Mejores calendarios HTML/JS

Cuando se necesita incluir un componente en la página que actúe a modo de datepicker, uno trata de recurrir a algo que se vea bien, pero que a la vez sea crossbrowser y que no lleve horas de implementar

Thursday 1 May 2008

Menú desplegable sin JS o Flash

Mucha gente cree que para hacer un menú desplegable que sea visualmente atractivo y a la vez funcione como corresponde, se requiere de un complejo trabajo de javascript, css, e incluso mucha gente incurre en un atentado contra la usabilidad.

Para toda esa gente, es mi placer presentar algunos interesantes ejemplos de menúes desplegables que solo requieren de XHTML y CSS.

Mi favorito es CSSPlay, cuyo autor regularmente publica nuevos ejemplos y experimentos variados de CSS, entre ellos: menúes, layouts, boxes y un par de cosas más que pueden resultar dignas de ver.

Otros sitios que recomiendo: