¿Problemas de usabilidad?
Filed in
Curiosities
Tags: humor, usabilidad
Filed in
Computers
Tags: buscadores, java, lucene, php, programación
Lucene es una librería opensource de recuperación de información, usada generalmente para la programación de motores de búsqueda. Fue originalmente implementada en Java por Doug Cutting, aunque ha sido portada a otros lenguajes de programación como C, C++, Python, Perl, Ruby, PHP, … Para PHP existe Zend Search Lucene, un motor de búsqueda de propósito general escrito íntegramente en PHP5. Zend Search Lucene almacena sus índices en el sistema de archivos, evitando la necesidad de un servidor de bases de datos. Nos permite una ranked searching (los mejores resultados aparecerán los primeros), diversas potentes consultas (consultas de frases, consultas por proximidad, consultas por rango, …) y búsquedas por campos específicos (por título, autor, contenidos, …).
Zend Search Lucene puede ser una opción estupenda para integrarlo en un proyecto escrito en PHP (nos olvidaríamos de la conexión puente entre Java y PHP), aunque investigando un poco en temas de eficiencia me he topado con un artículo donde el autor hace un pequeño benchmark para comparar Zend Search Lucene y Lucene en Java. Se llega a las siguientes conclusiones:
jayant@jayantbox:~/myprogs/java$ java searcher Total : 30000 docs t2-t1 : 231 milliseconds jayant@jayantbox:~/myprogs/php$ php -q searcher.php Total 30000 docs total time : 15 seconds
Aún así se pensó que tal vez el código en PHP devolvía los documentos que se estaba buscando, por lo que se hizo un cambio en el código donde se extraían todos los documentos tanto en PHP como en Java. Sin embargo el tiempo empleado por el código en PHP fue mucho mayor:
jayant@jayantbox:~/myprogs/java$ java searcher Total : 30000 docs t2-t1 : 2128 milliseconds jayant@jayantbox:~/myprogs/php$ php -q searcher.php Total 30000 docs total time : 63 seconds
El código de búsqueda en PHP usado para Lucene fue el siguiente:
<?
*
* searcher.php
* On 2007-06-06
* By jayant
*
*/
include("Zend/Search/Lucene.php");
$index = new Zend_Search_Lucene("/tmp/myindex");
echo "Total ".$index->numDocs()." docsn";
$query = "java";
$s = time();
for($i = 0; $i < 100; $i++)
{
$hits = $index->find($query);
// retrieve all documents. Comment this code if you
// dont want to retrieve documents
foreach($hits as $hit)
$doc = $hit->getDocument();
}
$total = time() - $s;
echo "total time : $total s";
?>
Y el código de búsqueda en Java usado para Lucene fue este:
/*
* searcher.java
* On 2007-06-06
* By jayant
*
*/
import org.apache.lucene.search.*;
import org.apache.lucene.queryParser.*;
import org.apache.lucene.analysis.*;
import org.apache.lucene.analysis.standard.*;
import org.apache.lucene.document.*;
public class searcher {
public static void main (String args[]) throws Exception
{
IndexSearcher s = new IndexSearcher("/tmp/myindex");
System.out.println("Total : "+s.maxDoc()+" docs");
QueryParser q = new QueryParser("content",new StandardAnalyzer());
Query qry = q.parse("java");
long t1 = System.currentTimeMillis();
for(int x=0; x < 100; x++)
{
Hits h = s.search(qry);
// retrieve all documents. Comment this code
// if you dont want to retrieve documents
for(int y=0; y < h.length(); y++)
{
Document d = h.doc(y);
}
}
long t2 = System.currentTimeMillis();
System.out.println("t2-t1 : "+(t2-t1)+" ms");
}
}
Más información | Whatever….
Filed in
Football
Tags: antonio puerta, sevilla, sevilla fc

Fallece Antonio Puerta, un campéon en toda regla. 22 años, andaluz, sevillista, su mujer embarazada de ocho meses, … Todos recordaran el gol que marcó en la copa de la UEFA al Schalke 04 en 2006, gol que le valió al Sevilla FC para meterse en su primera final europea. Que descanses en Paz.
Filed in
Curiosities,
Computers
Tags: apple, barcelona, mac
Ayer estuve en el Apple Shop (dentro de la Fnac del Triangle en Barcelona), la primera tienda oficial de Apple en España que abrió sus puertas el jueves pasado. Cabe decir que no es un Apple Store ni mucho menos, aunque puedes encontrar demostraciones de los últimos productos en vivo y en directo.

El Apple Shop está situada justo en la entrada de la primera planta de la Fnac de Plaça Catalunya.. Al entrar te encuentras con un stand de Apple (información) y dos mesas bastante amplias donde están dispuestos diversos productos de demostración (nuevos iMacs, MacBooks, iPod, accesorios de Apple…) donde los clientes pueden trastear libremente.

Como curiosidad, la tienda fue montada en solo una noche y no ha quedado nada mal
Filed in
General,
Curiosities
Tags: 12 angry men, citas, inglés

Well, I’m not used to supposin’. I’m just a workin’ man. My boss does all the supposin’ - but I’ll try one. Supposin’ you talk us all out of this and, uh, the kid really did knife his father?
Filed in
Computers
Tags: dom, innerhtml, javascript, programación
A pesar de que innerHTML sea relativamente mucho más rápido, existen ciertas cuestiones que hacen más recomendable el uso de DOM para manejar documentos xHTML.
innerHTML
document.getElementById("contenedor").innerHTML =
"<div id="capa" >Texto<!--comentario--></div>";
DOM
div = document.createElement("div");
div.setAttribute("id", "capa");
texto = document.createTextNode("Texto");
div.appendChild(texto);
div_comentario = document.createComment("comentario");
div.appendChild(div_comentario);
document.getElementById("contenedor").appendChild(div);
innerHTML
texto = document.getElementById("contenedor").innerHTML
DOM
texto = document.getElementById("contenedor").firstChild.nodeValue;
innerHTML
data = new Array("one","two","three");
mHTML = "<ul>";
for(i=0; i<data.length; i++) {
mHTML+="<li>" + data[i] + "";
}
mHTML+="</ul>";
document.getElementById("contenedor").innerHTML = mHTML;
DOM
data = new Array("one", "two", "three");
eUL = document.createElement("ul");
for(i=0; i<data .length; i++) {
eLI = document.createElement("li");
eLI.appendChild(document.createTextNode(data[i]));
eUL.appendChild(eLI);
}
document.getElementById("contenedor").appendChild(eUL);
Más información | SlayerOffice
Más información | Mozilla Developer Center
Filed in
Internet,
Curiosities
Tags: easter eggs, google
Ya vimos hace tiempo como Google nos daba la respuesta a la vida al universo y a todo. Hoy navegando por internet me encuentro con este easter egg, donde el gigante de colorines nos responde si le preguntamos por el número de cuernos en un unicornio (number of horns on a unicorn).
Filed in
Events,
Bussiness 2.0
Tags: barcelona, bcnemprende
A raíz de un debate en el blog de Sacha Fuentes, se lanza la propuesta de montar un evento tipo Iniciador en Barcelona. La idea es crear un evento seminformal cada mes para compartir experiencias, contar ideas, comentar diversos temas de interés, … Para empezar, se ha fijado una fecha para celebrar una reunión donde se comenzará a modelar el evento:
* Fecha: 12 de septiembre de 2007
* Hora: 19:30
* Lugar: por determinar, dependiendo de la gente que se apunte
Puedes apuntarte libremente a la primera reunión en el wiki que se ha puesto a disposición.
Filed in
Curiosities,
Bussiness 2.0
Tags: xurrency
Filed in
Football,
Curiosities
Tags: atila kasac, cd logroñés
¿Creías que nadie podía superar a Iván Campo? Es el gran Atila Kasac, aquel delantero serbio que vino a jugar a España en el CD Logroñés. A parte de ser feo, fue un auténtico fracaso en el equipo riojano. Solo jugó varios partidos y se pasó casi toda la temporada 94-95 lesionado.


A aquellos niños que coleccionaron cromos de ediciones Este, recordarán que había otra versión trucada de Atila Kasac (más feo todavía):

Filed in
Internet,
Computers,
Bussiness 2.0
Tags: api, php, programación, soap, xurrency
Aunque ya lleva bastante tiempo terminada, hoy encuentro un hueco y lanzo la API de Xurrency. Ahora puedes integrar datos en tu sitio o aplicación web directamente desde Xurrency. Como ya comenté en un principio, la API está basada en SOAP, así que podrás usarla en diferentes lenguajes de programación (multiplataforma). Para PHP, sugiero usa la libreria NuSOAP, una colección libre de clases que permiten a los usuarios enviar y recibir mensajes SOAP.
Actualmente los métodos disponibles son los siguientes:
El uso de la API con NuSOAP es tan sencillo como el siguiente ejemplo, donde se muestra el nombre de la divisa con código eur.
require('lib/nusoap.php');
$cliente = new soapclient('http://xurrency.com/api.wsdl', 'wsdl');
$err = $cliente->getError();
if($err)
exit();
$proxy = $cliente->getProxy();
$resultado = $proxy->getName('eur');
if (!$cliente->getError())
echo $resultado;
else
echo $cliente->getError();
Además, he publicado una lista sandbox que muestra las salidas de todos los métodos que ofrece la API.
Más información | API Xurrency
Filed in
Computers
Tags: ati, avivo, gnu/linux
Este post es una adaptación al castellano de la guía que se publicó en Phoronix hace unos días, incluyendo algunos fixs para posibles problemas (fruto de mi experiencia). Desde hacer un par de meses, un grupo reducido de personas estuvieron investigando (en su tiempo libre, el porqué de la tardanza) las tarjetas gráficas ATI con chip R500 usando ingeniería inversa. El código que actualmente hay disponible permite inicializar y fijar modos de videos en los modelos de Radeon X1300 y X1600. Cabe decir que el driver no tiene todavía soporte 3D.
Antes que nada, debemos de tener instalado la versión 1.3 del X server. Para conseguir esta versión del servidor X en Ubuntu 7.04 Feisty Fawn deberás de instalarlo desde el código de fuente o actualizar con los paquetes de Ubuntu 7.10 Gutsy Gibbon (o actualizar a una versión Tribe). Para la instalación, yo actualicé mis paquetes editando mi lista de repositorios (/etc/apt/sources.list) y actualizando mi sistema:
apt-get update apt-get dist-upgrade
Nota: Algunos comandos que usaré en la guía requieren privilegios de administrador.
Una vez el X server 1.3 instalado, hay algunos paquetes que deberán instalarse para adquirir el último código de fuente de Avivo usando git y para construir el driver.
apt-get install build-essential git-core configure-debian
apt-get install xorg-dev libtool libpciaccess-dev autoconf
Cuando tengamos git instalado, podremos proceder a obtener el código de fuente del Avivo driver.
git-clone git://anongit.freedesktop.org/git/avivo/xf86-video-avivo
Nota: Si no puedes instalar el paquete git-core, descárgalo de Ubuntu Packages.
Ya con el código del driver en nuestro poder, comenzaremos a generar los archivos.
./autogen.sh --prefix=/usr/
Durante la compilación obtenía el siguiente error:
aclocal configure.ac 78 macro AM_CFLAGS not found in library
Para arreglarlo es suficiente con actualizar a automake1.9:
apt-get install automake1.9
Una vez que tengamos el driver generado sin errores, podremos instalarlo en el sistema. El driver contiene soporte para varias tarjetas gráficas con el chip R500, desde la Mobility FireGL V7200 hasta la Radeon X1950GT. Sin embargo, si por casualidad tu PCI ID o tarjeta gráfica no está listada, se puede añadir nuevas PCI ID en xorg/avivo_chipset.c y include/avivo_chipset.h. Ten en cuenta que si haces alguna modificación en el código de fuente, debes de generar el código con autogen.sh otra vez. Para instalar el driver en el sistema, lo haremos con make.
make; make install
Si todo fue bien, el Avivo X.Org driver habrá sido instalado correctamente. Sin embargo, el archivo xorg.conf necesita actualizarse manualmente para reflejar el nuevo driver instalado. Hay que editar la sección de device, fijando avivo (antes vesa o fglrx).
Section "Device"
Identifier "Targeta de vídeo genèrica"
Driver "avivo"
BusID "PCI:1:0:0"
Option "ShadowFB" "On"
EndSection
Además, también necesitarás añadir las siguientes líneas al archivo xorg.conf, para prevenir errores cuando ejecutemos X.
Section "Extensions"
Option "Composite" "Disable"
EndSection
Section "ServerFlags"
Option "AIGLX" "Off"
EndSection
Después de que hayas configurado el archivo xorg.conf, reinicia al servidor X
Finalmente, este driver también tendrá soporte para las Radeon HD 2000. El Avivo driver también funciona con RandR 1.2 para el soporte de dynamic display.
Filed in
Curiosities
Enlace
In a Lorentzian manifold, a closed timelike curve (CTC) is a worldline of a material particle in spacetime that is “closed”, returning to its starting point.
Filed in
Andalusia,
Computers
Tags: andalucía, dinero, gnu/linux, sevilla, software libre
Vergüenza me da al leer en el BOJA (Boletín Oficial de la Junta de Andalucía) del pasado mes de Julio, el desembolso derroche de 150.000 euros en concepto de licencias de Microsoft Office para el Ayuntamiento de Sevilla. Algo despampanante y sin sentido, un dinero malgastado que se podría invertir en otras necesidades. La noticia saltó a la luz hace unos días en Kriptópolis, donde alguien solicitó una explicación al Ayuntamiento de Sevilla y recibió la siguiente contestación, por parte de un tal José Miguel Rufo Ortíz, del Gabinete de Alcaldía:
Por indicación del Sr. Alcalde y en referencia a su atento email he de informarle que el Ayuntamiento de Sevilla es usuario de los productos de Microsoft, en concreto de Microsoft Works y Office desde 1992 aproximadamente y es usado por el personal de administración. El cambio a Open Office requería una formación de todo ese personal, la instalación en todos los equipos y migración de las actuales aplicaciones que utilizan estos productos.
En el momento actual nos encontramos adquiriendo equipos personales nuevos, que deben tener instalados los productos adquiridos legalmente y esta es la causa de la adquisición de las 400 licencias de Microsoft Office.
No obstante lo anterior y conjuntamente con la Junta de Andalucía, se han comenzado a instalar aplicaciones con software libre y utilizando el Open Office. Este proceso ha comenzado a principios de año y su duración será larga en el tiempo, por lo complejo que son estos procesos de migración.
Esperando haber resuelto su preocupación, reciba un cordial saludo, atentamente:
Jose Miguel Rufo Ortiz
Gabinete de Alcaldía
Me gustaría hacer unos comentarios respecto a tal respuesta, que en mi opinión, no hay por donde cogerla.
…he de informarle que el Ayuntamiento de Sevilla es usuario de los productos de Microsoft, en concreto de Microsoft Works y Office desde 1992 aproximadamente y es usado por el personal de administración.
Bueno, siempre hay tiempo de rectificar…
El cambio a Open Office requería una formación de todo ese personal, la instalación en todos los equipos y migración de las actuales aplicaciones que utilizan estos productos.
Ah, y por eso hay que desembolsar ahora la cantidad de 150.000 euros (unos 25 millones de las antiguas pesetas) en 400 licencias de Microsoft Office… ¡Semejante tontería! Con la mitad de ese dinero se podría pagar años de formación a todo el personal. Además, ¿formación para Open Office? Pienso que cualquier persona con nocciones básicas de ofimática puede usar Open Office sin ningún problema.
En el momento actual nos encontramos adquiriendo equipos personales nuevos, que deben tener instalados los productos adquiridos legalmente y esta es la causa de la adquisición de las 400 licencias de Microsoft Office
¿Ein?
No obstante lo anterior y conjuntamente con la Junta de Andalucía, se han comenzado a instalar aplicaciones con software libre y utilizando el Open Office. Este proceso ha comenzado a principios de año y su duración será larga en el tiempo, por lo complejo que son estos procesos de migración.
Vamos a ver, si el Ayuntamiento ha comenzado un proceso de migración (complejo, como ellos dicen), ¿por qué quieren adquirir las licencias de Microsoft Office para los equipos nuevos? Ya que están en proceso migración, ¿por qué no usan software libre desde un principio? (sino volveríamos al mismo problema). Creo que el problema radica en lo de siempre, la gente no tiene ni puta idea de informática. Los que saben, usan software libre
Filed in
Curiosities
Tags: grigorij perelman, matemáticas
Hace unas semanas en el metro de San Petersburgo un blogger rusó captó con su móvil estas instantáneas de Grigori Perelman, aquel matemático que rechazó el premio de un millón de dólares tras resolver la conjetura de Poincaré, uno de los siete problemas matemáticos abiertos. Perelman muestra un estado denigrante y un aspecto desaliñado. Según algunas fuentes Perelman se encuentra sin empleo y vive con su madre en un barrio a las afueras de San Petersburgo. Además, comentó que había abandonado las matemáticas, ya que está decepcionado y no tiene nada que decir interesante.
Filed in
General
Tienes que ir a verla. La verdad es que me esperaba otra cosa (peor), pero está realmente bien. Es como un capítulo de los de antes, con ese humor ácido que cautivó a casi todo habitante del planeta, pero más largo de lo habitual. La trama principal está basada en una amenaza natural que recae sobre Springfield, tal vez con la intención de parodiar de cierto modo la amenaza del cambio climático sobre nuestro planeta (ya conocemos la faceta científica de la serie). Debido a la excesa contaminación de Springfield, el gobierno decide poner en marcha un plan para destruir la ciudad. La familia Simpson tratará de salvar al pueblo de tal amenaza.
Nuevos chistes, nuevos gags que hacen reir a la sala. Muy recomendable.