Detectar caras en imágenes mediante PHP

Excelente extensión para PHP que permite usar OpenCV (Open Source Computer Vision Library) para poder detectar caras en imágenes.
Por ahora dispone de dos funciones: face_count y face_detect, que proporcionan el número de caras encontradas y un array con las coordenadas de la cara. La verdad es que puede ser muy útil para todas las aplicaciones sociales que hay ahora.
Para instalarlo es necesario tener instalado: pkgconfig, libpng, zlib, libjpeg, libtiff y python.
PHP Facedetect Extension
Vía / PHPDeveloper.org

Drizzle: MySQL para la web

Drizzle es de lo que más se está hablando últimamente dentro de los blogs sobre MySQL. Se trata de un motor de base de datos pensado para la web. Basado en MySQL 6, pretende llegar a ser más rápido que MySQL y admitir mucha concurrencia.

En base inicial, creado por una comunidad de desarrolladores liderado por uno de los fundadores y desarrolladores iniciales de MySQL, elimina de MySQL6 los triggers, procedimientos almacenados, las vistas, control de acceso, caché de queries y prepared statements, tan solo MyISAM con índices FULLTEXT.

Tiene muy buena pinta, ahora a ver a qué llega el desarrollo.

Más información

Drizzle

Se regalan 20 invitaciones para YouAre

youare_logo.pngSi el otro día hablaba del lanzamiento de YouAre, que aún está en beta privada, hoy dispongo de 20 invitaciones para usar YouAre.
Aquellos que quieran una de esas 20 invitaciones solo tienen que mandar un email a use[arroba]youare[punto]com con el título Invitaciones Sentido Web para que conseguirla.
Actualización: ya se han repartido todas las invitaciones.

DocumentFragments en Javascript

Nunca se para de aprender, y de John Resig menos. DocumentFragments son contenedores ligeros que pueden almacenar objetos DOM de Javascript. Yo ni había oído hablar de ellos y la verdad es que su uso es sencillo y mucho más potente que trabajar con el DOM normalmente (de 2 a 3 veces más rápido).

El ejemplo que muestra John lo dice todo y muy fácil. Primero creamos unos elementos para luego insertarlos (de forma normal y con DocumentFragments):

var elems = [
document.createElement("hr"),
text( document.createElement("b"), "Links:" ),
document.createTextNode(" "),
text( document.createElement("a"), "Link A" ),
document.createTextNode(" | "),
text( document.createElement("a"), "Link B" ),
document.createTextNode(" | "),
text( document.createElement("a"), "Link C" )
];
function text(node, txt){
node.appendChild( document.createTextNode(txt) );
return node;
}

Y luego la inserción normal:

var div = document.getElementsByTagName("div");
for ( var i = 0; i < div.length; i++ ) { for ( var e = 0; e < elems.length; e++ ) { div[i].appendChild( elems[e].cloneNode(true) ); } }

Y por último el nuevo método:

var div = document.getElementsByTagName("div");
var fragment = document.createDocumentFragment();
for ( var e = 0; e < elems.length; e++ ) { fragment.appendChild( elems[e] ); } for ( var i = 0; i < div.length; i++ ) { div[i].appendChild( fragment.cloneNode(true) ); }

Resumiendo, mucho más eficiente y sencillo de usar. Seguro que para la próxima versión de jQuery nos ofrece esta implementación.

Manual y ejemplos de mod_security

mod_security es un módulo de Apache que nos permitirá añadir seguridad a nuestro servidor web, detectando y previendo ataques. Para los que necesitemos usarlo, nos vendrá muy bien esta serie de tutoriales:

  • mod_security + mod_rewrite
  • Evitar spam en los campos POST de los formularios
  • Activar mod_security en DreamHost
  • Descativar mod_security para una determinada IP
  • Descativar mod_security con autorización en htaccess
  • Ejemplo de configuración para DreamHost
  • Bloquear spam
  • Forzar espera de ms en conexiones
  • Permitir ciertos REQUEST_METHODS
  • y más

mod_security Guide and Examples of use in .htaccess

Razones por las que Flash no es bueno para el SEO

No soy un experto en SEO (casi todo lo contrario), por lo que este artículo me ha parecido bastante interesante. Se trata de algunos motivos por los que crear sitios en Flash no es bueno para el SEO, aun cuando ahora Google lo indexa:

  • Diferente contenido no son diferentes URLs: al igual que pasa con algunas aplicaciones basadas en Ajax, diferentes contenidos pueden estar dentro de un mismo Flash.
  • Problemas con el texto: debido a la realización de efectos o de la disposición de este, en muchas ocasiones el texto se divide en líneas, objectos o en letras (por ejemplo para animaciones).
  • Animaciones incrustadas: es típico que unas animaciones estén dentro de otras, lo cual, al no haber URLs que referencien, indica que va a tener poco PageRank o similar.
  • No se sabe cómo Google indexa: al ser un método propietario, no se sabe qué y cómo indexa Google los contenidos Flash, por lo que se va un poco a ciegas en este sentido.
  • Faltan las bases para el SEO: en Flash no hay enlaces (<a>), negritas (<strong>), o cabeceras (<h1> .. <h6>).
  • No se indexa todo: Google dice que ni ejecuta Javascript ni indexa contenidos externos llamados desde Flash, algo que es muy común.

Flash and SEO – Compelling Reasons Why Search Engines & Flash Still Don’t Mix

Vía / CSS Globe

Nueva versión de Sphinx

Sphinx es un buscador de texto bastante rápido y potente (pensado para bases de datos grandes), que permite ser integrado con otras bases de datos como MySQL.

Acaban de sacar la versión 0.9.8 después de 15 meses de trabajo (y justo después de que yo ayer me bajara la versión anterior y la instalara). Existen más de 70 nuevas características, de las cuales destacaría:

  • Soporte para libstemmer, permitiendo stemmers para nuevos lenguajes.
  • Posibilidad de eliminar elementos HTML.
  • Decodificar entidades HTML.
  • Añadidas nuevos modos de crear excerpts.
  • Mejorado el motor para obtener queries.
  • Nuevos modos de ordenación de resultados.
  • Nuevas APIs para Java, C y Ruby.

Sphinx

Lanzamiento de YouAre.com

Los amigos de BlogsMedia acaban de lanzar YouAre.com, proyecto en el que he colaborado un poco, por lo que me hace mucha ilusión que ya salga a la luz.
youare.png
YouAre es una publicación de contenidos por microblogging, pudiendo publicar textos, vídeos y fotos, permite networking, canales de ciudad, bookmarking, importación de contenidos (delicious, flickr y youtube) y muchas cosas más (y las que faltan por venir).
En YouAre puedes incluir tu curriculum profesional y tus estudios para así poder contactar con otros usuarios, para mucha gente es importante la trayectoria que llevas hasta ese momento.
Como dirían en YouAre: Twitter + Tumblr + Linkedin + Del.icio.us + Ingrediente secreto = YouAre
Mucha suerte para JL y Gabi
disclamer: he participado en el desarrollo del proyecto [¡dios!, siempre he deseado poner un disclamer]

Flexviews: vistas materializadas en MySQL

Las vistas materializadas son aquellas vistas que se almacenan en una tabla de la base de datos. MySQL no provee de estas vistas, pero Flexviews lo simula mediante procedimientos almacenados que se ejecutan mediante triggers.
Flexviews