Oct 07

El grupo de programadores PHPBarcelona se complace en anunciar que los próximos 29 y 30 de Octubre se celebrará la cuarta edición de la PHP Barcelona Conference, un evento que poco a poco se ha ido consolidando en el calendario internacional de conferencias dedicadas al PHP y que por su reducido precio y alta calidad de los contenidos representa una oportunidad única, más si vives en España.

La conferencia tendrá lugar en el Citilab (Barcelona) y contaremos con la presencia de Ilia Alshanetsky, Fabien Potencier, Stefan Priebsch, Lorenzo Alberton, Enrico Zimuel, entre muchos otros, que nos expondrán temas de los más variados mezclando ponencias teóricas con algunos talleres prácticos, todo acompañado de mucho networking, concursos, regalos, catering, etc. y, por supuesto, elePHPants para “casi” todos :) incluso contaremos con una prueba de certificación Zend en vivo para el que se anime.

Como cada año la PHP Barcelona Conference representa una oportunidad única para conocer auténticos gurus del mundillo PHP y lo más importante: pasarse dos días enteros aprendiendo mucho entre presentaciones, talleres y concursos y haciendo networking del bueno, no sólo con las celebridades invitadas y los demás asistentes, si no también con algunas de las principales empresas involucradas con el PHP de España y del resto del mundo.

A parte del inestimable trabajo de los miembros del grupo PHPBarcelona y su junta directiva, por supuesto contamos con la ayuda de nuestros queridos patrocinadores, empresas como Oracle, Zend, Atrapalo, Softonic, eMagister, Privalia, Microsoft, Tuenti, ServerGrove, D-Unlock u O’reilly, que desde un primer momento han apostado por nosotros y sin las que todo esto no sería posible.

Consulta la agenda del evento para ver en qué consistirá esta fiesta dedicada al PHP y regístrate por un precio muy reducido para una conferencia de estas características, tan sólo 60€ (o 30€ para un día).

Puedes encontrar información detallada acerca de la conferencia y lo necesario para registrarte en la web del evento: http://phpconference.es

  • Facebook
  • Twitter
  • del.icio.us
  • Bitacoras.com
  • Meneame
Etiquetas:
Abr 10

Hace tiempo escribí un post acerca de como usar FeedBurner para los feeds de un WordPress que se ha quedado algo obsoleto debido a algunos cambios en WordPress respecto a la URL de los feeds y a la compra de FeedBurner por parte de Google.

Si todavía crees que usar FeedBurner es una buena idea (yo nunca lo tuve claro) la forma más cómoda de configurarlo es modificando el archivo .htaccess, aunque también existen plugins específicos (por ejemplo el FD Feedburner Plugin).

Se trata de añadir lo siguiente al .htaccess:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} !FeedBurner [NC]
RewriteCond %{HTTP_USER_AGENT} !FeedValidator [NC]
RewriteRule ^feed/(.*)$ http://feeds2.feedburner.com/xxxxxx [R,L]
</IfModule>

Con lo anterior conseguimos que nuestro WordPress únicamente genere el feed para FeedBurner y que el resto de clientes (navegadores, arañas, etc.) sean redirigidos a la URL de FeedBurner.

Teóricamente este es el mejor método para usar FeedBurner ya que seguimos difundiendo la URL del feed original y así siempre podemos dejar de usar este servicio sin muchos inconvenientes. El problema está en que al haber la redirección muchos usuarios siguen el enlace del feed con el navegador y se suscriben a la URL del feed de FeedBurner… o sea que con el tiempo acabaremos con lectores suscritos a ambas URLs.

El método alternativo es modificar el theme de WordPress, o usar algún plugin, para difundir directamente la URL del feed de FeedBurner.

Proxy de Google

Si teníamos una cuenta en FeedBurner y la hemos migrado a Google recientemente, a parte del engorroso cambio de la URL del feed, quizás hemos notado que ahora la URL que difunde tu feed para cada post pasa por un proxy de Google.

En principio esto ya sucedía antes y el cambio únicamente es que ahora en lugar de pasar por feeds.feedburner.com pasa por feedproxy.google.com (aunque en mi caso antes de migrar la cuenta a Google no pasaba por ningún proxy, tengo caché, lo puedo demostrar :)

En cualquier caso si queremos desactivar completamente el proxy de Google hemos de cambiar la configuración de nuestro feed en FeedBurner. Concretamente se trata de desactivar la opción “Item link clicks” de la sección “TotalStats” dentro de la pestaña “Analize”. Con esto seguiremos teniendo estadísticas de número de lectores e ítems vistos (información más que suficiente) pero difundiremos siempre la URL original de cada post, algo muy recomendable para SEO (como bien nos explicaba Armonth hace tiempo).

Así es como debería quedar la configuración en FeedBurner:

FeedBurner snapshot

  • Facebook
  • Twitter
  • del.icio.us
  • Bitacoras.com
  • Meneame
Etiquetas:
Abr 02

Desde la llegada de PHP 5.0 disponemos de varios métodos mágicos para nuestras clases PHP, entre ellos tenemos __toString() que nos permite codificar cómo queremos que se comporte una clase cuando una instancia de ella se convierte a un string.

Aunque a simple vista el método __toString() pueda parecer poco importante en PHP éste toma mucha relevancia si trabajamos con symfony o algún otro framework orientado a objetos donde la información de la base datos se encuentra mapeada en un modelo de objetos.

A pesar de que __toString() está disponible desde la versión 5.0.0 del PHP en mi opinión no empieza a ser realmente útil hasta la versión 5.2.0, algo que en el changelog del PHP reflejaron con un tímido:

Changed __toString() to be called wherever applicable. (Marcus)

Hasta entonces __toString() sólo se llamaba cuando se usaba echo() o print() lo que limitaba mucho su funcionalidad. Desde la versión 5.2.0 __toString() se llama siempre que tratemos a un objeto como a un string.

Por ejemplo dada la siguiente definición de clase:

class User extends BaseUser
{
  public function __toString()
  {
    return $this->getName();
  }
}

Hasta PHP 5.2.0 sólo podíamos invocar a __toString() con:

$user = new User();
echo $user;
print $user;

Desde la versión 5.2.0 podemos hacer varias cosas interesantes con __toString() sobretodo relacionadas con el manejo de arrays de objetos, algo muy frecuente en los frameworks que corren por ahí hoy en día.

Por ejemplo si obtenemos el típico array de objetos con symfony:

$users = UserPeer::doSelect(new Criteria());

Trabajando directamente con las funciones de PHP entre otras muchas cosas podemos:

  • Ordenar el array de objetos con un simple sort()
  • Eliminar objetos duplicados del array con un array_unique()
  • Generar una lista separada por comas para la presentación con un implode()
  • Buscar un objeto determinado dentro del array con array_search()

Alternativas a __toString()

Si no tenemos la suerte de trabajar con PHP 5.2.x, o si queremos poder trabajar con un método distinto de __toString() para determinadas operaciones con arrays de objetos, podemos usar un código parecido al que propongo a continuación:

class objectTools
{
  protected static function getMethodValues($list, $method)
  {
    $items = array();
    foreach ($list as $key => $obj)
      $items[$key] = $obj->$method();
    return $items;
  }
  protected static function getObjectList($items, $list)
  {
    $ret = array();
    foreach ($items as $key => $item)
      $ret[] = $list[$key];
    return $ret;
  }
  public static function arraySortByMethod($list, $method, $sort='desc')
  {
    $items = self::getMethodValues($list, $method);
    asort($items);
    if ($sort=='desc')
      return array_values(array_reverse(self::getObjectList($items, $list)));
    return self::getObjectList($items, $list);
  }
  public static function arrayUniqueByMethod($list, $method)
  {
    $items = self::getMethodValues($list, $method);
    return self::getObjectList(array_unique($items), $list);
  }
  public static function arrayImplodeByMethod($list, $method, $sep)
  {
    $items = self::getMethodValues($list, $method);
    return implode($sep, $items);
  }
  public static function arraySearchByMethod($list, $method, $needle)
  {
    $items = self::getMethodValues($list, $method);
    return array_search($needle, $items);
  }
}

Lo anterior es más una propuesta de código que algo decente para ser distribuido. Simplemente se trata de trabajar con un array temporal para almacenar los valores del método solicitado, correr la función PHP y, si es necesario, volver a construir el array de objetos.

Algunos ejemplos de uso:

$ordenados = objectTools::arraySortByMethod($users, 'getName', 'asc');
$sin_duplicados = objectTools::arrayUniqueByMethod($users, 'getName');
$pos = objectTools::arraySearchByMethod($users, 'getName', 'oriol');
//y por último en una plantilla...
echo 'Usuarios: ' . objectTools::arrayImplodeByMethod($users, 'getName', ', ');

Fácilmente se pueden añadir tantos métodos de tratamiento de arrays como se necesiten... o mucho mejor hacer un método que simplemente reciba como variable la función PHP a ejecutar. En mi caso de momento sólo necesito estos en concreto y también así los puedo controlar individualmente.

Aunque estos métodos de objectTools nacieron como "parche" rápido dado que no tenía PHP 5.2.x para un proyecto symfony, ahora, una vez solventando el problema con los servidores, los sigo encontrando útiles en múltiples situaciones. Por supuesto se ha de tener presente el poco rendimiento de este código frente a realizar queries a medida usando el objeto Criteria, pero si ya tenemos un array de objetos en memoria sí que será más óptimo trabajar con él en lugar de lanzar varias queries contra la base de datos.

  • Facebook
  • Twitter
  • del.icio.us
  • Bitacoras.com
  • Meneame
Etiquetas:
Mar 16

Hace poco más de dos semanas se liberó la versión 5.2.9 del PHP. La que probablemente será la última release de la rama 5.2.x... o al menos eso esperamos muchos como yo que andamos impacientes por la llegada de la 5.3 estable con todas sus novedades.

Como siempre se corrigen un buen número de bugs de seguridad (algunos relacionados con las extensiones libxml y XML) y se añaden algunas mejoras menores... por ejemplo, como curiosidad, ahora a la función array_unique le podemos pasar el tipo de comparación a realizar para descartar ítems. En el changelog están detallados todos los cambios.

En mi opinión siempre es muy recomendable actualizar los servidores a la última versión, si queremos podemos esperar unas semanas para ver como reacciona internet a una nueva release pero se ha de tener en cuenta que lleva meses de test por parte de la comunidad (algo en lo que, por cierto, cualquiera puede participar). Me parece sorprendente todavía encontrar sistemas/proyectos corriendo PHP 4.x o incluso 5.0.x / 5.1.x. (aunque PHP 5 sigue sonando a nuevo se ha de pensar que la versión 5.0 salió el Julio del 2004 y la 5.1 el Noviembre del 2005).

A pesar de que muchas distribuciones Linux (no tanto los *BSD) incluyen como estables versiones desfasadas del PHP si uno tiene un servidor web (LAMP) creo que es recomendable conseguir tener la combinación Apache+MySQL+PHP lo más actualizada posible. Es la forma de aprovechar las nuevas funcionalidades existentes (sobretodo en el caso del PHP dado que es un lenguaje de programación :) y también es la forma de encontrar bugs y hacer que estos proyectos open source evolucionen correctamente.

PS: Por suerte HostGator hace tiempo que se pusieron las pilas y nos mantienen bastante actualizados (este blog corre sobre PHP 5.2.8).

  • Facebook
  • Twitter
  • del.icio.us
  • Bitacoras.com
  • Meneame
Etiquetas:
Feb 25

Este Viernes 27 de Febrero nuestros amigos de phpLondon organizan su conferencia anual de PHP, la PHP UK Conference 2009, sin duda una de las conferencias de PHP con más renombre y una de las que cae relativamente cerca (si vives en España).

Este año pinta realmente interesante con presentaciones muy variadas, puedes revisar la agenda completa en la web del evento. Entre otros temas se hablará sobre como vivir (o sobrevivir) con los frameworks PHP, mitos sobre symfony, un poco de REST, Flex y AIR, Drizzle, PHP 5.3 y 6.0 (namespaces, funciones lambda, etc.)... incluso uno de Microsoft nos "intentará" descubrir Windows como servidor para aplicaciones PHP (esto no me lo pierdo).

Aunque entre viaje, estancia y entrada asistir tiene un coste considerable es una pequeña aventura PHP que merece la pena. Como siempre en este tipo de eventos a parte de los nuevos conocimientos que se puedan adquirir se ha de valorar la posibilidad de networking con un buen número de gurus en la materia.

PS: y si el presupuesto no te lo permite (o en tu empresa no quieren pagártelo) siempre puedes esperar a la siguiente edición de la PHP Barcelona Conference :)

  • Facebook
  • Twitter
  • del.icio.us
  • Bitacoras.com
  • Meneame
Etiquetas:
preload preload preload