domingo, 26 de abril de 2009

Thickbox una alternativa a Lightbox sobre JQuery

0 comentarios
Una de mis bibliotecas favoritas es Lightbox 2, la he utilizado en muchas ocasiones, pero cuando empecé a incluir JQuery en mis proyectos me encontré con un problema: Lightbox trabaja sobre scriptaulous y ocupa más de 180 Kb. Si a esta biblioteca ya de por sí pesada sumamos JQuery -que suelo utilizar para añadir algún efecto y porque utilizo JQuery Validator y JQuery Date Picker-, nos encontramos con una página lenta, pesada y que va a consumir una cantidad de recursos sencillamente prohitiva. La solución es buscar un plugin para JQuery que me de lo mismo que Lightbox -o parecido, sigue pareciéndome el más conseguido-. Hay versiones de Lightbox para JQuery, pero no tienen la elegancia que se busca al utilizar un plugin así.
De modo que hay que cambiar la marca si se quiere trabajar con JQuery y lo mejor que he encontrado es Thickbox.
El uso de este plugin para JQuery es muy sencillo, basta con incluir JQuery y el código de Thickbox (JavaScript y CSS):

<style type="text/css" media="all">
@import "template/css/stylesheet.css";
@import "js/thickbox.css";
</style>

<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="js/thickbox-compressed.js"></script>

Thickbox funciona sobre los enlaces, de modo que será en los elementos <a /> donde especificaremos mediante el atributo class que queremos enlazar con una imagen ampliada, y utilizaremos el atributo rel para agruparlas en galerias:

<a href = "imagengrande1.jpg" class = "thickbox" rel = "galeria1">
<img src = "thumbnaiil1.jpg" alt = "Img 1"/>
</a>
<a href = "imagengrande2.jpg" class = "thickbox" rel = "galeria1">
<img src = "thumbnaiil2.jpg" alt = "Img 2"/>
</a>
<a href = "imagengrande3.jpg" class = "thickbox" rel = "galeria2">
<img src = "thumbnaiil3.jpg" alt = "Img 3"/>
</a>
<a href = "imagengrande4.jpg" class = "thickbox" rel = "galeria2">
<img src = "thumbnaiil4.jpg" alt = "Img 4"/>
</a>

lunes, 20 de abril de 2009

Nuevos CAPTCHA propuestos por Google

0 comentarios

En Dirson publicaban ayer este post proponiendo dos tipos de CAPTCHA más difíciles de romper por spammers. En este caso dejamos la comparación de textos aleatorios o de sumas sencillas para utilizar imágenes que en principio sólo parecen diferenciables por seres humanos. En el caso de la imagen que ilustra este post, el usuario debería decir cual es la imagen que tiene la orientación correcta. En el enlace podréis ver otro que nos oblica a enderezar una foto para poder pasar el CAPTCHA.
Desde que se publicó ayer he escuchado la misma crítica: si hay sólo dos respuestas posibles, un spammer no lo tendrá difícil para violarlo. Sin embargo me parece un buen concepto y parece que trabajando un poco la idea podríamos tener buenos resultados. Y se trata de jugar con conceptos humanos que, quizás habría que complicar un poco más y combinarlos con ideas similaras, pero que podrían funcionar de lujo. ¿Cómo funcionaría pedir a un usario que identificara algo en una foto? ¿Sería una traba importante para la accesibilidad? ¿Y si preguntamos "de qué color es el vestido de la foto"? Espero vuestras opiniones en los comentarios.


Fotografía: Google Dirson y Wendypan

viernes, 17 de abril de 2009

Topología, magia y creencias

0 comentarios
Hoy vamos a salirnos un poco del desarrollo web para entrar en el mundo de las matemáticas.
En Microsiervos publicaban ayer este truco de "magia topológica", sorprendete a primera vista, pero fácil de pillar al volver a verlo:

Al ver el video uno se da cuenta de por dónde pueden ir los tiros en la infinidad de puzzles topológicos (comúnmente conocidos como juegos de ingenio), en los que nos encontramos una cuerda imposible de liberar sin romper... aparentemente. Obviamente, todos estos juegos tienen un truco diseñado para que tengan solución. Veamos el sigiente video como ejemplo sencillo de un truco topológico:

En esto se basan todo ese tipo de trucos, por ejemplo, los que hay a la entrada del Parque de las Ciencias de Granada o los de un escapista (¿sigues creyendo en la magia?). Quizás esto os ayude a partir de ahora a resolver agún puzzle de ingenio. Feliz fin de semana.


@hazarco (¡muchas gracias!) me recomienda este video de Tabary en el que hay un poco de topología y bastante de magia -aunque para verlo, es mejor olvidar el truco y dejarse llevar por la sutilezade la actuación de Tabary-:

lunes, 13 de abril de 2009

Sobrecarga de funciones en PHP 4

0 comentarios
De entrada, la sobrecarga de funciones no se encuentra entre las posibilidades de PHP, aunque hay algunas formas de simularlo a partir de PHP 5. En versiones anteriores también podemos conseguir un efecto parecido utilizando las funciones de PHP que nos permiten manejar el número de argumentos de la función que quisieramos sobrecargar. Una forma de sobrecargar una función sería la siguiente:
function mifuncion($param1, $param2 = "val2", $param3 = "val3"){
...
}
function mifuncion($param1){
...
}

En el primer caso preparamos la función para ser llamada con varios parámetros, con una serie de valores por defecto, y en el segundo sólo le pasamos un parámeto, obligatorio, que sería un array con toda la información necesaria para la ejecución de la función. Pero como sabemos PHP leerá esto como la redeclaración de mifuncion() y nos mostrará un mensaje de error:
Fatal error: Cannot redeclare mifuncion() (previously declared in ...)

Lo que sí podemos hacer es declarar mifuncion() una sola vez, sin especificar ningún parámetro y programar diferentes comportamientos en función del número y el tipo de argumentos utilizando las siguientes funciones:
Lo que vamos a hacer en concreto es anteponer al código de nuestra función una detección y procesado de los argumentos, los prepararemos para la ejecución de la función -lo que, entre otras cosas, nos va a permitir sobrecargar funciones ya escritas sin tener que tocar ese código. Lo explicaré sobre el código de "sobrecarga" de la función anterior (donde, recordemos, queriamos pasar los datos bien por parámetros, bien como array, y poder tener una serie de valores por defecto):
function mifuncnion(){

//Declaramos variables con los nombres de los argumentos que queremos utilizar
$param1 = NULL;
$param2 = NULL;
$param3 = NULL;

//Comprobamos el número de argumentos
if (func_num_args() == 0){

//Sin argumentos rompemos la ejecución de la función
return "No has pasado argumentos";

}

else if (func_num_args() == 1){

//Con un solo argumento, comprobamos que este sea un array antes de procesarlo.

if (!is_array(func_get_arg(0))){

//Si no es un array rompemos la ejecución de la función
return "El argumento debe ser un array";

}
else{

//Separamos en variables los parámetros pasados por array, si no se han pasado, se les da su valor por defecto

$args = func_get_args();

$param1 = $args[0]['param1'] ? $args[0]['param1'] : "Valor por defecto para param1";
$param2 = $args[0]['param2'] ? $args[0]['param2'] : "Valor por defecto para param2";
$param3 = $args[0]['param3'] ? $args[0]['param3'] : "Valor por defecto para param3";

}

}
else{

//Con varios argumentos, se procesan en orden, si no se han pasado, se les da su valor por defecto.
$args = func_get_args();

$param1 = $args[0];
$param2 = $args[1] ? $args[1] : "Valor por defecto para param1";
$param3 = $args[2] ? $args[2] : "Valor por defecto para param2";

}

//Resto del código de la función

}

viernes, 3 de abril de 2009

Conficker: cómo sabes si estás infectado de forma rápida y gratuíta

0 comentarios
Vía Security by Default -blog que gusto de seguir asiduamente-, descubro Conficker Eye Chart. Se trata de una web que utiliza una serie de imágenes cargadas desde los servidores de antivirus que bloquea Conficker para que el usuario sepa si está infectado con un método sencillísimo: si alguna de las imágenes no carga, posiblemente esté infectado.

jueves, 2 de abril de 2009

Cirujía estética

2 comentarios
Gracias a @mondador a partir de mañana luciré una nueva cara en las redes sociales y, quizás un día de estos, en la cabecera de este blog. El primer sitio donde podeis ver este rostro -del que no se va a desvelar nada en este blog- es en el blog del artista, Ilustrarte.
Sobra decir que el trabajo es buenísimo, pero quiero reiterar mi agradecimiento. ¡Me encanta!