Entradas

Mostrando las entradas etiquetadas como frameworks

Migrando zend expressive a mezzio

Imagen
Hace ya un tiempo se gestaron cambios en Zend, ahora es Láminas y el soporte a Zend Framework tal y lo conocíamos ha caducado, ahora el Framework es Mezzio. Esta es la equivalencia de los nuevos paquetes, la mayoría de cambios son solo de namespaces: zendframework/zend-auradi-config => laminas/laminas-auradi-config zendframework/zend-cache => laminas/laminas-cache zendframework/zend-code => laminas/laminas-code zendframework/zend-component-installer => laminas/laminas-component-installer zendframework/zend-config-aggregator => laminas/laminas-config-aggregator zendframework/zend-db => laminas/laminas-db zendframework/zend-debug is abandoned, you should avoid using it. No replacement was suggested. zendframework/zend-diactoros => laminas/laminas-diactoros zendframework/zend-escaper => laminas/laminas-escaper zendframework/zend-eventmanager => laminas/laminas-eventmanager zendframework/zend-expressive => mezzio/mezzio zendframework/zend...

Personalizar las tablas users y password_resets en Laravel 5.6

Imagen
La autenticación en Laravel es un proceso muy sencillo, pero de tan sencillo personalizarlo tiene sus detalles, en este post veremos como personalizar, en parte, las tablas de usuarios y reinicio de contraseñas. Según lo estricto que seas con la estructura de tu base de datos y el formato que hayas elegido seguir puede que los valores de los campos y las tablas por defecto de Laravel no sean de tu agrado, como es mi caso, por ejemplo: Laravel prefiere minúsculas y plurales para los nombres de las tablas, yo utilizo UpperCamelCase y singular. Para los nombres de los campos Laravel utiliza guión bajo (underscore) y minúsculas, yo prefiero lowerCamelCase, con lo cual, necesito renombrar los siguientes campos de estas tablas: remember_token - rememberToken  created_at - createdAt updated_at  - updatedAt id - userId Y renombrar las tablas: users - User password_resets - PasswordReset Si utilizas las migraciones de Laravel tienes que cambiar los nombres de las...

Slim 3 en Apache como proxy de Nginx

Imagen
Supongo que si has llegado a este post es que conoces Slim , pero para los que no, voy a hacer una pequeña introducción. Slim es un micro framework PHP que te ayuda a escribir con rapidez aplicaciones web simples pero potentes y APIs. Aunque esa es su definición, Slim es realmente útil a la hora de crear servicios web. Ya va por la versión número 3 y aunque no tiene ni página en la Wikipedia, es bastante recomendable. Bien, yendo al grano. Si bien en su página web de documentación vienen detalladas las configuraciones para nginx, apache y otros servidores , lo que no viene es la configuración si tenemos un Nginx como front que utiliza Apache como proxy para las peticiones de PHP. Para este caso concreto lo que debemos hacer es configurar Nginx para que envíe la petición tal y como la recibe a Apache y que apache se encargue de procesarla. Imaginemos que el servicio web se encuentra en una subcarpeta de nuestra aplicación, /api, de manera que accedemos /api/public. Est...

Novedades en PHP 5.4

Imagen
En el post anterior vimos por qué actualizar a PHP 5.4 en cuanto a factores de optimización del núcleo central, pero, ¿qué novedades trae esta nueva versión? Servidor web incorporado Uno de los cambios más grandes en PHP 5.4 es la adición de un servidor web incorporado. Esto nos permite utilizar PHP sin tener que instalar Apache o IIS y poder probar nuestro sitio en un instante. No es un súper servidor robusto, pero es genial para el manejo de un cierto desarrollo y pruebas en una sola máquina. Con el fin de iniciar el servidor web, la forma más fácil es navegar a la carpeta raíz de PHP y, a continuación, ejecutar PHP usando el flag S. Este servidor utiliza la carpeta public_html como raíz de los contenidos por ello debemos de crearla bajo la carpeta principal de PHP y allí ubicar todos los archivos de nuestro sitio web. php –S localhost:80 En caso de que nos salga el siguiente error failed to listen on localhost:80 (reason:Permission denied) es porque otra aplicación está utiliz...

jQuery, Firefox 15, live + onKey

Si tenéis errores con Firefox 15 utilizando jQuery con captura de eventos del tipo live blur, y además tenéis sobre ese elemento definidas funciones onKeyUp o por el estilo, tened presente que esto os va a dar error, lo aconsejable para solucionarlo es eliminar las funciones onKey del propio elemento y definirlas dentro del estándar jQuery, o también podéis probar a actualizar vuestra versión de este framework a la más reciente.

Capturar click derecho con jquery

 Jquery carece de una función que sea rightClick() [por ejemplo] es por ello que para acceder a este evento es necesario utilizar algunos trucos de programación. El motivo por el cual no existe esta función es muy sencillo, un click derecho no deja de ser un click al igual que el doble click no deja de ser dos clics seguidos. Métodos para capturar ele evento click con jquery Para capturar el click en jquery podríamos utilizar cualquiera de estas variantes: $('div').bind('click', function (){ alert ('clicked'); }); $('div').live('click', function (){ alert ('clicked'); }); $('div').click( function (){ alert ('clicked'); }); Diferenciar entre click derecho e izquierdo con jquery Mientras que en cambio no existe el evento rightclick como os comentaba anteriormente. En cambio desde la versión 1.1.3 de jQuery event.which normaliza event.keyCode y event.charCode por lo que no tenemos que preocuparnos po...

Bug con el plugin de jquery WYSIWYG

Imagen
El plugin de jquery WYSIWYG es uno de los que más utilizo y de hecho utilizaba una de las versiones antiguas la 0.5, el motivo que me hizo actualizar es que esta versión no permite crear cuadros WYSIWYG (What you see is what you get – Lo que ves es lo que obtienes) dentro de un dialog de jquery ui, o sí los crea pero no permite editarlos ni escribir en ellos. La solución fue bastante simple, actualizar a la última versión del momento la 0.95 pero con ella vinieron nuevos errores: En efecto, como podréis notar los botones se duplicaban y esto lo he reportado en el bug número 218 de la página de Google Code. La solución no obstante es bastante sencilla y pasa por crearnos una variable interna en el plugin que yo la llamé initStart y en la línea 494 dentro de la función que anexa el menú agregar estas líneas: if ( this .initStart) return ; this .initStart = true ; Con esto estaría solucionado y nos quedaría de la siguiente forma: El motivo de esto es la doble llamada (línea...

Bug en jquery 1.4.4 con la función each

Imagen
El motivo por el que muchos utilizamos jquery es por la comodidad que nos brinda al trabajar con varios navegadores y un mismo código, además de eliminar prácticamente toda las validaciones de errores que pueden detener la ejecución de una página web. Dicho esto en la versión 1.4.4 hay un error muy curioso en la tan útil función each, imaginemos el siguiente código: $.each(datos, function(clave, valor) {}); En él la variable datos (en mi caso) es un objeto json, el problema viene dado cuando esta variable está vacía. En Google Chrome 10 el error reportado en el archivo jquery es que la función length no puede ser aplicada a un objeto nulo, mientras que Mozilla Firefox 3.6.13 se queda más corto y solo nos dice que object es nulo (en la versión normal de jquery) ó que j es nulo (en la versión minimizada). Para reportar un bug en jquery podemos hacerlo desde el enlace anterior. Este bug en concreto tiene el número 8008 . Otros bugs que he reportado recientemente para Chr...

Frameworks vs frameworks

Imagen
Los frameworks han llegado al mundo de la programación para quedarse, por su facilidad de uso y el poco conocimiento que se necesita para implementarlos, esto sumado a la gran cantidad de material que se puede encontrar de cada uno de ellos. Existen distintos tipos pero yo los separo en dos grandes categorías los del lado cliente y los del lado servidor. La única pega de estos es el consumo de recursos, al ser procedimientos estándar y estar validados para las más disímiles plataformas el consumo de recursos es mucho más elevado que un software a medida, es por ello que debemos mirar si nos compensa o no utilizarlos. ¿Por qué no utilizo un framework para PHP? Pues básicamente por el consumo de recursos, el hosting es mucho más elevado para servidores potentes e implementar un framework me llevaría casi el mismo tiempo (por el estudio que hay que hacer sobre como funciona) que programar funciones ya conocidas por mí y muchos más eficientes en mi entorno. ¿Por qué utilizo un fr...

Clicks automáticos con jQuery

JQuery trae por defecto la función .click() la cual se encarga como bien dice su nombre de dos cosas: redefinir las acciones que queremos realizar al hacer click sobre cada elemento lanzar este evento si no se define nada en su interior Sobre el punto 2 es el que quiero hacer hincapié y sobre todo en los tag <a>. Supongamos que tenemos la siguiente línea: <a href='url' id='enlace'>ir a url</a> Si hacemos $(‘#enlace’).click() es de suponer que simulara el click sobre el enlace y se abriera la nueva página, pero no; para ello tenemos que definir previamente el evento click para el enlace porque sino jQuery interpreta que esta vacío y no hace nada. La solución para lanzar el evento click , tomada de osdir.com, es la siguiente: // definimos lo que queremos hacer en el click primero $("#enlace").click(function() {      location.href = this.href; // ir al link }); // lanzamos la llamada al evento click $("#enlace").click...

jQuery Treeview 1.4 bugs en Chrome 3+

Imagen
Luego de varias pruebas y solo con Google Chrome en versiones superiores a la 3 (la alpha de la 4 también ha sido testeada) el control de este pluging de jquery no se carga como debería. El pluging funciona perfectamente salvo cuando recargas la página con F5 que se carga todo correctamente menos el div que contiene los botones de control definido según el atributo ‘control’. El div en cuestión desaparece de la pantalla junto con todo lo que contiene y no muestra ningún error, no sé si será debido a la actualización de su motor de javascript que también impide el reenvio de un mismo formulario 2 o más veces hacia una nueva ventana.