PHP 5.6 deja de ser beta

El equipo de desarrollo de PHP ha anunciado el lanzamiento de la primera release candidate, PHP 5.6.0RC1, por el momento no se recomienda su uso en entornos de producción, pero es importante revisar las novedades y cambios que trae para ir preparando nuestras aplicaciones.

Entre esta relase candidate y su predecesora en beta se ha añadido soporte en mysqlnd para MySQL 5.7 y se han solucionado algunos errores.

Entre las novedades más destacadas que llegan con PHP 5.6 está:

  • incorporación de un debbuger interactivo (phpdbg)
  • reutilización del flujo de lectura de php://input
  • soporte para ficheros de más de 2GB
  • inclusión del operador … (tres puntos) que permite la variación del número de argumentos en las funciones y el desempaquetado de arrays y objetos con interface travesable de forma similar a como se hace en Ruby
  • soporte para potenciación a través del operador **
  • mejoras en SSL/TLS y soporte para el algoritmo GOST

Warning: Creating default object from empty value

El titulo muestra el mensaje que despliega PHP cuando se intenta manejar una variable como si fuese un objeto (por ejemplo cuando sobre una variable vacía intentamos asignar valor a una propiedad).

<?php

$usuario->nombre = 'Salvador';
$usuario->apellido = 'Mendez';

?>

Hasta PHP 5.4 los mensajes E_STRICT no estaban incluidos en E_ALL, por lo que el código anterior no mostraba ningún tipo de error en la mayoría de configuraciones de servidores PHP. Pero a partir de 5.4 obtendremos «Warning: Creating default object from empty value in …».

Info extraída del manual de PHP:

En PHP 5 está disponible el nuevo nivel de error E_STRICT. Antes de PHP 5.4.0, E_STRICT no estaba incluido dentro de E_ALL, por lo que se teniía de habilitar explícitamente este tipo de nivel de error en PHP < 5.4.0. La habilitación de E_STRICT durante el desarrollo tiene algunos beneficios. Los mensajes STRICT proporcionan sugerencias que pueden ayudar a asegurarse de la mejor interoperabilidad y la compatibilidad hacia delante del código. Estos mensajes pueden incluir cosas como llamar a métodos no estáticos de forma estática, definir propiedades en una definición de clase compatible mientras se definió en un trait usado, y antes de PHP 5.3, algunas características obsoletas emitirían errores E_STRICT como asignar objetos por referencias durante la instanciación.

Es una forma de intentar que se respete el paradigma de orientación a objetos, así los mensajes E_STRICT ayudan a generar código PHP que ofrezca una mayor compatibilidad con versiones futuras.

Para evitar que se muestre ese error, debemos asegurarnos que trabajamos con objetos, generando uno vacío cuando no lo son:

<?php

if(!is_object($usuario))
{
    $usuario = new stdClass;
}

$usuario->nombre = 'Salvador';
$usuario->apellido = 'Mendez';

?>

Disponible PHP 5.5.10 y 5.4.26

El grupo de desarrolladores de PHP han anunciado la disponibilidad de las versiones 5.5.10 (listado de cambios) y 5.4.26 (listado de cambios). Como es habitual se recomienda a todos los usuarios actualizar a estas últimas versiones, están disponibles a través de la página de descarga.

También está disponible la versión de desarrollo 5.6.0alpha3, con los avances de la nueva versión.

Instalar Google Chrome en Linux a través de YUM

Google Chrome es ya uno de los navegadores de referencia en todas las plataformas y además cuenta con el beneplácito de los usuarios que ven en él un modo fácil y rápido de escapar a Internet Explorer, además de aportar muchas herramientas adicionales.

No es mi propósito hablar de las ventajas del navegador del buscador más popular de la red, para eso hay muchos artículos por la red, el interés de este post es hablar de cómo instalarlo en sistemas Red Hat y derivados a través del popular YUM.

Podemos optar por dos modos, el primero descargando directamente el RPM desde la página de Google y la segundo agregando el repositorio de YUM. El segundo método tiene evidentes ventajas sobre el primero, sobre todo a la hora de mantener actualizado el sistema.

Para instalarlo con el RPM en local, procedemos a descargarlo desde la web de Google, nos situamos en el directorio e instalamos con:

yum localinstall --nogpgcheck google-chrome-stable_current_x86_64.rpm

Para usar el segundo método, tendremos que crear el repositorio, para ello generamos el fichero /etc/yum.repo.d/google.repo y ponemos lo siguiente:


[google-chrome-32]
name=Google Chrome - 32-bit
baseurl=http://dl.google.com/linux/chrome/rpm/stable/i386
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

[google-chrome-64]
name=Google Chrome - 64-bit
baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

Podemos optar por montar uno sólo de los repositorios eligiendo el que corresponda a la arquitectura de nuestro procesador.

Después de esto sólo queda un paso para tener instalado Google Chrome:

#### Version Estable ###########
yum install google-chrome-stable
#### Version Beta ###########
yum install google-chrome-beta

Y … listo a disfrutar del navegador de Google en Linux.

Nota para desarrolladores web: Google Chrome tiene la misma base que Safari, por lo que si vuestra web está dando problemas en Mac y no tenéis uno a mano, podéis comprobar los errores con este navegador (muy útil con problemas en javascript)

Configurar Subversion para controlar las versiones del código

Para los que nos dedicamos al desarrollo de software es de vital importancia poder hacer un seguimiento de todos los cambios que realizamos en una aplicación, sobre todo cuando se trata de trabajar en equipo con distintos programadores realizando distintas tareas, e incluso llevar un control de los cambios que realizan distintos equipos dentro de un mismo software.

Cuando el proyecto está bajo el paraguas del software libre, herramientas como las proporcionadas por www.sourceforge.net son de mucha ayuda. Entre ellas se encuentra el uso de Subversion o CSV para la gestión de versiones. Personalmente prefiero subversion.

Este es un pequeño HOWTO de como configurar subversion corriendo bajo Apache, se presupone que se tiene instalado Apache, Subversion, el módulo DAV para Apache y las herramientas de administración de Subversion.

Lo primero que debemos hacer es crear un directorio para nuestro repositorio. Nuestro directorio principal para guardar nuestro control de versiones sobre subversion será /var/subversion/, dentro crearemos un subdirectorio donde se almacenarán los datos con subversion:

# mkdir /var/subversion/repositorio

Ahora debemos crear la estructura de subversion para almacenar las versiones y asignarle permisos para poder acceder:

# svnadmin create /var/subversion/repositorio/
# chmod 777 -R /var/subversion/repositorio/

Con esto ya tenemos listo el repositorio, ahora debemos generar el acceso a través de URL, para ello usaremos el módulo de Apache WebDav. Editaremos el fichero de módulo DAV de Apache (en Devian lo encontraremos en /etc/apache2/mods-available/dav_svn.conf), al final del fichero incluiremos las siguientes líneas:

# Acceso repositorio SVN

DAV svn
AuthType Basic
AuthName «Servidor Subversion»
SVNPATH /var/subversion/repositorio

En «Location» debemos poner la URL por la que queremos acceder al repositorio y en SVNPATH debemos colocar la ruta absoluta hacia el directorio que contendrá los ficheros de nuestro repositorio. Con esto ya debería estar funcionando nuestro repositorio con Subversion, basta con enlazarlo desde cualquier IDE que soporte control de versiones y comenzar a guardar las versiones de vuestros proyectos.

Como subversion no es sólo lo que he comentado, existe un estupendo manual donde podéis encontrar todas las funciones que ofrece este gestor de versiones.

Evolución del uso de los lenguajes de programación

grafico-lenguajes-programacion-rankingA través de Vaya Astracanada, me entero de que la comunidad de programadores de TIOBE ha publicado la actualización de su ranking de uso de los lenguajes de programación, y su evolución en los últimos años. A la cabeza se mantiene Java (20,4%), seguido bastante de cerca por C (17,3%). Por detrás y a bastante distancia se encuentran en rangos similares C++ (10,4%), PHP (9,3%) y Visual Basic (7,8%). En el gráfico podemos apreciar un fuerte descenso de C++ a partir de 2005 y un estancamiento en la evolución ascendente que mantenía PHP hasta 2006.

Llamativa es la caida de Perl, que ahora mismo sitúa su popularidad por debajo de lenguajes como Python y C#, y con Javascript pisandole los talones.