Resumo lo más interesante de mi timeline de Twitter esta semana (esta vez con un poco de retraso):

Resumo lo más interesante de mi timeline de Twitter esta semana:

wordpress

He estado instalando WordPress en un servidor de desarrollo que tengo para realizar todo tipo de proyectos. El servidor está montado sobre un Xubuntu (por eso de evitar Unity y que consuma pocos recursos) y sobre este, la típica combinación de Apache, PHP y MySql. Además, para optimizar los tiempos de respuesta de PHP uso el aceledador APC.

Procedo a descargar WordPress, descomprimo y asigno los permisos necesarios a los ficheros para crear la configuración con el instalador que incluye. Tras terminar y abrir sesión con el usuario creado descubro que al acceder al escritorio o dashboard (/wp-admin) el servidor responde con una página en blanco. Realizo unas comprobaciones previas y activo el modo debug de WordPress en el fichero wp-config.php:

define('WP_DEBUG', true);

Al acceder a la página de administración aparecen unos mensajes de error indicando que no se encuentran algunas funciones.

SOLUCIÓN: El problema viene por el acelerador APC. Para evitarlo, es necesario modificar el fichero php.ini con lo siguiente:

apc.include_once_override = 0
apc.filters = wp-cache-config

Opciones de APC

  • include_once_override: se encarga de optimizar la carga que se realiza al sistema por las llamadas require_once e include_once.
  • filters: expresión que indica que ficheros no se deben cachear.

Más información sobre la configuración de APC.

Tras realizar este cambio y recargar la página vereis vuestro nuevo y flamante WordPress.

 

Resumo lo más interesante de mi timeline de Twitter esta semana:

Aunque el título suene atractivo, PHP no ha incorporado la herencia múltiple como tampoco lo hace Java pero si que desde la versión >= 5.4 incorpora un mecanismo llamado Traits que simularía la herencia múltiple de clases. Los Traits son usa especie de clases cuya misión es agrupar funcionalidades comunes. Este tipo de clases no se puede instanciar directamente sino que se emplea en una clases. Ejemplo:


trait base1 {

  function metodo1(){ return 'metodo1'; }

  function metodo2(){ return 'metodo2' }

}

class base2 {

  function metodo1(){ return 'base2:metodo1' }

}

class miClase extends base2 {

  use base1;

}

Mediante la palabra reservada use, incorporamos la funcionalidad contenida en el trait base1 y mediante extends incorporamos la funcionalidad de base2. Como vereis, base1 y base2 comparten nombres de métodos comunes. Para solventar conflictos, existe una precedencia: Miembros de clase actual -> miembros del trait -> miembros heredades (extends), es decir, los miembros de miClase tienen precedencia sobre los de base1 y base1 tiene precedencia sobre los de base2.

Insertar multiples traits es muy sencillo:

use traitClass1, traitClass2, traitClassN

Resolución de conflictos entre Traits

En algunas ocasiones varios traits comparten nombres de métodos y si el conflicto no se resuelve genera un error fatal. Para resolver un conflicto disponemos de los operadores as e insteadof.

trait base1 {

  function metodo1(){ return 'metodo1'; }

  function metodo2(){ return 'metodo2' }

}

trait base2 {

  function metodo1(){ return 'base2:metodo1'; }

  function metodo2(){ return 'base2:metodo2' }

}
use base1, base2 {
base1::metodo2 insteadof base2;
base2::metodo1 insteadof base1;
}

No es la herencia múltiple de Python pero no está mal la aproximación. Preferiría que en futuras versiones resolviesen los conflictos de una manera más transparente con algún tipo de convención.

HTML5: Infografía de expectativas de uso

Muy interesante la infografía que he visto vía Genbetadev y que concluye que el 94% de los 4043 desarrolladores web encuestados opina que HTML5 será fundamental en los próximos 2 años.

Me gusta el resultado, teniendo en cuenta que los navegadores móviles se optimizarán más y las web app darán un buen resultado de rendimiento.

A %d blogueros les gusta esto: