Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas
Mostrando entradas con la etiqueta programacion. Mostrar todas las entradas

miércoles, 2 de febrero de 2011

Sphinx 1.10-beta en Ubuntu 10

Ésta guia me ha permitido configurar y realizar requests a sphinx 1.10-beta desde php con apache2, mysql5 y php5.3.
El paquete no es estable, y por ello no viene incluido en el repositorio de ubuntu. Lo que aquí he probado no sería la opción más recomendable para producción dado que aún tiene bugs.

Ojo que aquí omito la creacion de la BBDD en MySQL y la creacion del index (sudo indexer index1, que hay que configurarlo previamente). Todo eso podeis encontrarlo googleando un poco.

http://sphinxsearch.com/docs/1.10/

sudo apt-get install libmysqlclient-dev (los headers de mysql actualizados, ya que mysql-dev está obsoleto)

CXXCPP="gcc -E" ./configure --prefix=/usr/local/sphinx (--with-mysql-includes es opcional si quieres especificar donde esta mysql)

sudo make
sudo make install
-- compilar la api/libsphinxclient

cd sphinxFolder/api/libsphinxclient/
sudo make install

-- si peta, corregir el bug en el sphinxclient.c (esperemos lo corrijan en la proxima version)
#ifndef _WIN32
if ( setsockopt ( sock, SOL_SOCKET, SO_NOSIGPIPE, (void *)&optval,
(socklen_t)sizeof(optval)
{
set_error ( client, "setsockopt() failed: %s", sock_error() );
return -1;
}
#endif

->

#ifndef _WIN32
#ifdef SO_NOSIGPIPE
if ( setsockopt ( sock, SOL_SOCKET, SO_NOSIGPIPE, (void *)&optval,
(socklen_t)sizeof(optval)
{
set_error ( client, "setsockopt() failed: %s", sock_error() );
return -1;
}
#endif
#endif

#define vsnprintf _vsnprintf
->
//#define vsnprintf _vsnprintf

-- ejecutar
/api/libsphinxclient/test -z 'usr/local/sphinx/include' o sino -> mkdir -p -- "/usr/local/sphinx/include"

sudo pecl install sphinx (especificar path /usr/local/sphinx)

-- añadir a php.ini
"extension=sphinx.so"

sábado, 19 de junio de 2010

Optimizando Google Maps - I

En un proceso de carga con API V2 de google maps (deprecated) se ejecutan las siguientes operaciones

1. bootstrap.js (se descarga cuando el browser detecta la linea de inclusión de la API)
2. main.js (200k de código JS, el core de la API. El parsing en plataformas móviles es muy lento)
3.
4. setCenter()
5. descarga de los tiles (Varios ficheros de imagen, cada conexión tiene un overhead considerable)

La solución es utilizar el API V3 (el actual) que básicamente ataca:
1. Reducir el overhead de los tiles, usando la API estática y posteriormente cargar la API dinámica. (el usuario no podra interactuar durante un breve periodo pero verá el mapa en pantalla)
2. Modularizar main.js para mejorar el parsing inicial del core.

Conferencia Google Code 2009