Lista de recursos para desarrollar aplicaciones para Facebook

Facebook es una aplicación que está muy de moda en estos momentos (no entiendo por qué) y aunque su desarrollo no es muy complicado, obtener la información de cómo hacer las cosas y encontrar algo en su documentación puede ser algo difícil. Su Wiki es un horror, los ejemplos escasos y los foros no muy útiles. Por ello, quien necesite encontrar ejemplos y tutoriales puede venirle bien esta lista:

Vía / Got Ads?

FancyBox: zoom de imágenes mediante Javascript

Buen script creado en jQuery que permite añadir zoom a imágenes. Está testado en IE6, IE7 y Firefox. Entre las características muestra en una ventana lightbox la imagen en un tamaño mayor, pudiendo ajustarse al tamaño de la ventana y mostrando un marco alrededor de la imagen. Además permite mostrar un grupo de imágenes de forma común.

fancybox.png

Un ejemplo de uso sería el siguiente:

$(function() {
$("div#test_zone a").fancybox();
});

FancyBox

Bug en el método UTC del objeto Date de Javascript

O al menos en Firefox. Se trata de que si quiero obtener el timestamp de una fecha usando el método Date.UTC me devuelve datos incorrectos.
Por ejemplo, en esta llamada Date.UTC(2008, 3, 2, 18, 33, 32) (el mes es abril porque empieza desde 0), se verá que da un el timestamp 1207161212000, mientras que si creamos un objeto Date y obtenemos su timestamp (new Date(2008, 3, 2, 18, 33, 32)).getTime() obtenemos el timestamp 1207154012000, habiendo 2 horas de diferencia.
Habrá que tener cuidado

Método sencillo para leer feeds mediante PHP

Leer feeds no es algo que se deba limitar a aplicaciones lectoras de feeds, ya que actualmente muchas webs ofrecen sus datos mediante este formato. Hacer un lector de feeds puede ser algo complicado, o más bien laborioso, ya que hay varios formatos y versiones, a parte de que no todo el mundo publica feeds válidados.

Se puede realizar un sencillo lector de feeds con PHP gracias a la librería SimpleXML (se necesita PHP5). Tan solo habrá que leer el feed y parsearlo, y luego acceder a sus elementos. Algo así como:

$data = @simplexml_load_string(file_get_contents($url));
if ($data) {
// Obtiene el los elementos <item>
$items = $data->xpath('//item');
}

Pero hay que tener en cuenta que el existen etiquetas como <content:encoded> que la librería no las leerá y recuperará tan fácilmente. Para ello deberemos mirar el xmlns correspondiente:

xmlns:content="http://purl.org/rss/1.0/modules/content/"

y leer la etiqueta de la siguiente manera:

foreach ($data as $item) {
$content = $item->children('http://purl.org/rss/1.0/modules/content/');
echo (string) trim($content->encoded);
}

Con este código se puede empezar a leer feeds, pero aún así, si necesitáis más, podéis mirar este post, que es donde he encontrado la solución al <content:encoded>.

|

Geoposicionamiento con Yahoo en PHP

No solo de Google vive el programador, y en ese caso se trata de Yahoo y la posibilidad de jugar con el geoposicionamiento gracias a su API.

Los ejemplos que muestra el enlace al que referencio son bastante sencillos y se basan en una llamada HTTP, que puede devolver distintos formatos.

La base de la aplicación sería este script:

<?php
function request_cache($url, $dest_file, $timeout=43200) {
if(!file_exists($dest_file) || filemtime($dest_file) < (time()-$timeout)) {
$stream = fopen($url,'r');
$tmpf = tempnam('/tmp','YWS');
file_put_contents($tmpf, $stream);
fclose($stream);
rename($tmpf, $dest_file);
}
}
function yahoo_geo($location) {
$q = 'http://api.local.yahoo.com/MapsService/V1/geocode';
$q .= '?appid=rlerdorf&location='.rawurlencode($location);
$tmp = '/tmp/yws_geo_'.md5($q);
request_cache($q, $tmp, 43200);
libxml_use_internal_errors(true);
$xml = simplexml_load_file($tmp);
$ret['precision'] = (string)$xml->Result['precision'];
foreach($xml->Result->children() as $key=>$val) {
if(strlen($val)) $ret[(string)$key] =  (string)$val;
}
return $ret;
}
?>

El resto de los ejemplos son muy sencillos de seguir.

GeoCool!