links for 2007-01-08
-
Repaso de Michael Arrington a la burbuja…
-
Listado de recursos (tutoriales, generadores automáticos…) para crear logos 2.0, estrellas (badges), botones…
Interesante recopilación de ataques XSS. No es un documento válido para aquellos que no sepan nada sobre XSS, sino para quienes tengan ya algún conocimiento y quieran profundizar más sobre el tema.
Además de los ejemplos de posibles ataques, también ofrece herramientas online como codificador de caracteres en hexadecimal, decimal y Base64, y un ofuscador de IP.
XSS (Cross Site Scripting) Cheat Sheet
Vía / abcphp.com
Spotify ha sacado una su API para poder acceder a la información sobre canciones, álbumes o artistas, o para realizar búsquedas. Por ahora es muy sencillo, pero suficiente. Echo de menos la posibilidad de recuperar los datos por JSON y no sólo por XML, pero aún así está bien.
Su uso se realiza mediante URLs del tipo http://ws.spotify.com/search/1/track?q=It%27s%20Not%20Unusual
Vía / @gabubu
Mi amigo Christian me ha comentado que la entrada anterior sobre Twitter sería más interesante si mostrara los datos sobre un término.
Pues dicho y hecho, tan sólo se necesitan dos scripts, uno para recuperar los datos y otro para mostrarlos. El primero habrá que ponerlo en el cron para que recupere los datos cada cierto tiempo (en mi ejemplo busco “google” cada 2 minutos).
Hay que tener cuidado porque Twitter da un máximo de 2000 actualizaciones nuevas, por lo que tendremos que ajustar los tiempos de consulta en Twitter.
El script que lee los datos es el siguiente:
<? php
function insertar($consulta, $ult) {
global $db;
$data = json_decode(file_get_contents('http://search.twitter.com/search?q='.urlencode($consulta).'&refresh=true&since_id='.$ult));
$n = isset($data->total) && $ult != $data->max_id? $data->total:0;
$db->queryExec('INSERT INTO estadisticas (fecha, n) values ('.time().', '.$n.')');
if (!$ult) $db->queryExec("INSERT INTO opciones (clave, valor) values ('ultimo', ".$data->max_id.")");
else $db->queryExec("UPDATE opciones SET valor = ".$data->max_id." where clave='ultimo' ");
}
$consulta = $_GET['q'];
// Limpio para poder usarlo en el nombre para la BD
$_consulta = preg_replace('/[^A-Z0-9]/i', '_', $consulta);
if ($db = new SQLiteDatabase($_consulta.'.db')) {
$q = @$db->query("SELECT valor FROM opciones Where clave='ultimo'");
if (!$q) {
$db->queryExec('CREATE TABLE estadisticas (fecha real, n real, PRIMARY KEY (fecha));');
$db->queryExec('CREATE TABLE opciones (clave text, valor text, PRIMARY KEY (clave));');
$q = $db->query("SELECT valor FROM opciones Where clave='ultimo'");
}
$r = $q->fetchAll(SQLITE_ASSOC);
$ult = 0;
if (!empty($r)) $ult = $r[0]['valor'];
insertar($consulta, $ult);
}
?>
Y el script que dibuja la gráfica es:
<? php
$desde = strtotime($_GET['desde']);
$hasta = strtotime($_GET['hasta']);
$consulta = $_GET['q'];
// Limpio para poder usarlo en el nombre para la BD
$_consulta = preg_replace('/[^A-Z0-9]/i', '_', $consulta);
if ($db = new SQLiteDatabase($_consulta.'.db')) {
$q = $db->query("SELECT fecha, n FROM estadisticas Where fecha>".$desde." and fecha<".$hasta);
$r = $q->fetchAll(SQLITE_ASSOC);
foreach($r as $item) {
$x[] = $item['n'];
$l[] = $item['fecha'];
}
}
header('Location: http://chart.apis.google.com/chart?chtt=Line+Chart&chts=000000,12&chs=1000x600&chf=bg,s,ffffff|c,s,ffffff&chxt=x,y&chxl=0:|'.implode('|', $l).'|1:|'.implode('|', $x).'&cht=lc&chd=t:75.00,16.66,0.00,8.33,100.00&chdl=Label+1&chco=0000ff&chls=1,1,0');
Actualización: Google Charts no deja meter muchos valores por lo que la gráfica de arriba sólo saca las 20 últimas actualizaciones
Mi compañero David cansado de las URLs que genera WordPress (y quién no) ha creado un plugin que limpia las URLs de los posts de WP quitándole los caracteres “extraños”.
WP deja las interrogaciones (¿), comillas (“ ”) y otros caracteres más que se sustituyen por su correspondiente código (%nn).
Probado para UTF-8 y compatible con WP2.7+
The Definitive URL Sanitizer