No se ven los botones de close, prev, next de lytebox en IE8

programacion

Esto pasa con la versión 3.22 de lytebox.

No se ven ninguno de los botones (close, play, prev, next), ni tampoco el fondo oscuro del lightbox.

Para solucionarlo tenemos que hacer algunos cambios en la lytebox.css.

Se trata de pasar el estilo que se determina para un elemento en la subclase .gray a la clase principal.

Así, por ejemplo, el código:

#lbClose { width: 64px; height: 28px; float: right; margin-bottom: 1px;}
#lbClose.grey { background: url(../images/admin/close_grey.png) no-repeat; }

Pasaría a:

#lbClose { width: 64px; height: 28px; float: right; margin-bottom: 1px; background: url(../images/admin/close_grey.png) no-repeat;}
#lbClose.grey { background: url(../images/admin/close_grey.png) no-repeat; }

Esto lo tenemos que ir haciendo también para #lbPause, #lbPlay, y #lbOverlay.

Ojo con los #lbPrev, y #lbNext.

En este caso tendremos que incluir una linea como:

#lbNext:hover, #lbNext:visited:hover { background: url(images/next_grey.gif) right 15% no-repeat; }

Saludos!

Juego del ‘caza patos’ con Html5 y javascript

programacion

Juego cazapatos html5 y javascriptAdemás de que el juego es un clásico, de los que seguro que muchos de nosotros nos acordaremos por haber estrenado con él la pistola de la Nintendo (la de 8 bits), ahora nos servirá para algo un poco más didáctico como aprender html 5.

El creador del juego nos explica que es su primer juego hecho en javascript y que le ha costado alrededor de 18-20 horas y unas 500 líneas de código, usando jquery y spritely aunque algo modificado.

Nos comenta además, la problemática de llevar el juego al iPad.

Desde luego un ejercicio interesante.

A tener en cuenta si deseamos emprendernos en este tipo de aventuras.

http://mattsurabian.com/duckhunt/.

Cambiar redirección Joomla cuando acceso no permitido

Joomla

Por defecto, en Joomla, cuando clickamos en un ítem de menú, que es solo para usuarios registrados y no lo estamos, nos redirige a la pantalla de acceso (com_user, view login) con el texto “Usted debe loguearse primero”.

Es muy fácil que no queramos redirigir a esta página de Joomla, sino que queramos redirigir a la home, o a cualquier otro sitio.

Pues bien, para hacerlo, solo tenemos que modificar el archivo “application.php” de la carpeta ‘includes’, y más concretamente, la función “authorize” de la línea 195.

Concretamente, en la línea 209, podemos poner la url que queramos, y podemos dejar en la 210 que le agregue el parámetro de retorno si queréis.

Eso es todo.

Concurrencia, bloqueo de código y semáforos en php

PHP

En ciertas ocasiones necesitamos que una parte de nuestro código se ejecute por solo un usuario a la vez.
Estos bloqueos de código los utilizamos para evitar problemas de concurrencia.
En php es posible implementar estos bloqueos mediante semáforos. (Ver semáforos en el manual de php)

El problema es que no siempre nuestro hosting viene con una versión estilo System V (–enable-sysvsem) compilada de php.

Si esto es así, podemos resolver el problema ejecutando el siguiente código:

if ( !function_exists('sem_get') ) {
    function sem_get($key) { return fopen(__FILE__.'.sem.'.$key, 'w+'); }
    function sem_acquire($sem_id) { return flock($sem_id, LOCK_EX); }
    function sem_release($sem_id) { return flock($sem_id, LOCK_UN); }
}

Con esto, ahora ya podemos usar las funciones de php para semáforos (sem_get(), sem_acquire(), sem_release())

Aquí os dejamos un ejemplo práctico de cómo usar los semáforos para obtener el siguiente número de pedido disponible y actualizar el pedido actual:

$sem_key = 12;
$sem_id = sem_get($sem_key, 1);
if (! sem_acquire($sem_id)) die ('Error esperando al semaforo.');


$ref = $model->getNextPedidoReference();
$pedido->referencia = $ref;
if (!$model->Update($pedido)){
    handle_error("Error guardando el pedido");
    return;
}


if (! sem_release($sem_id)) die ('Error liberando el semaforo');

De esta forma ya podemos estar seguros de que no se podrá dar el caso de que dos usuarios obtengan el siguiente número de pedido disponible a la vez y acabes teniendo dos pedidos con la misma referencia.

Happy coding!