Vídeo de 100 años de IBM

A través de un tweet de Inti (conocido usuario de twitter en Venezuela), llegué a este interesante vídeo de los 100 años de IBM. Quiero compartirlo por ustedes por lo conmovedor, interesante y bien creado, pues es narra los inventos y logros alcanzados por esta compañía durante todo este tiempo a través de personas nacidas en cada año específico.

Me ha impresionado la cantidad de logros alcanzados por una misma compañía y como mucho de ellos apenas existen desde hace 100 años para acá, además como impuso reglas de igualdad de raza, género y discapacidad entre sus empleados mucho antes de ser normal para la sociedad.

Aquí les dejo el vídeo:

Nota: Por si acaso algunos no lo saben, IBM es el tercer mayor contribuidor de programadores para trabajar en el desarrollo de Linux, una de las primeras y principales empresas en apoyar el código abierto, el creador de los procesadores del Wii, Playstation 3 y Xbox 360, entre otros.

Como indexar múltiples índices de Solr

Esta fue una tarea que me tocó realizar en mi trabajo, debido a la poca documentación existente (me parece incompleta o no explican bien) y lo que me costó, decidí realizar una breve guía de como instalar solr y configurar varios índices; con el fin de ayudar a otras personas con el mismo problema o no tienen posibilidad de documentarse en inglés.

Para quienes no conocen Solr, es un motor de búsqueda de código abierto escrito en Java para tener un mayor rendimiento en las búsquedas o consultas muy grandes, es recomendable usarlo al momento de tener consultas a base de datos con mucho tiempo para obtener resultados y que estos sean constantes, por nombrar un caso.

Como está hecho en Java y corre sobre plataforma web, es necesario tener instalado y configurado Tomcat en el servidor. En esta guía se asume eso, si no saben, pueden buscar tutoriales en Internet para ver como hacerlo para su Sistema Operativo. Además, para este ejemplo se va a realizar un indice de una consulta a un servidor SQL Server para traer los datos y crear un índice con ello.

Instalación de Solr

  1. Primero vamos a http://lucene.apache.org/solr/ y descargamos la versión zip y la descomprimen en una carpeta temporal.
  2. Dentro de la carpeta comprimida, entren a la carpeta dist y renombrar el archivo apache-solr-x.x.x.war a solr.war
  3. Luego copian ese archivo en la carpeta lib de Tomcat.
  4. Como en este ejemplo usamos SQL Server para traer los datos, descargamos el driver jdbc de Sql Server (o el correspondiente para su gestor de Base de Datos) y se copia dentro de la carpeta lib de Tomcat.

Registro de una WebApp

El siguiente paso es crear cada  instacia ó aplicación web, por cada una de ellas se deben repetir los siguientes pasos:

  1. Desde la carpeta descomprimida en el paso 1 de la sección anterior (debería llamarse algo como apache-solr-x.x.x), copiar la carpeta example a la localidad deseada para guardar al configuración e indices (ejemplo /home/user/solr_indices ó C:\solr_indices)
  2. Ir a la carpeta /conf/Catalina/localhost dentro de Tomcat, allí crear un archivo .xml con el nombre de la aplicación (este nombre de la carpeta es el que saldrá en la URL) con el contenido a continuación, recuerden cambiar RUTA_TOMCAT por la ruta de instalación de Tomcat y RUTA_WEBAPP por la ruta de la carpeta creada en el paso anterior:
  3. <Context docBase="RUTA_TOMCAT/lib/solr.war" debug="0" crossContext="true" >
    <Environment type="java.lang.String" value="RUTA_WEBAPP" override="true" />
    <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="(127\.0\.0\.1)|(10\.2\.*)"/>
    </Context>

La cadena Valve, es opcional y sirve para restringir el acceso a la aplicación, en este caso permite acceso a la ip local y cualquiera de la red privada de clase A. El atributo allow (deny para denegar) permite expresiones regulares para las ips. Si desean bloquear nombres de dominio, usen RemoteHostValve.

Configuración de la WebApp con Solr

Les recuerdo, en este caso se estará usando SQL Server y se importarán los datos del indice desde una consulta al servidor de Base de Datos, si necesitan leer documentos XML u otra cosa, lean la wiki de Solr.

  1. Editar RUTA_WEBAPP/conf/solrconfig.xml y agregar el siguiente bloque:
    <requestHandler name="/dataimport" class="org.apache.solr.handler.dataimport.DataImportHandler">
    <lst name="defaults">
    <str name="config">data-config.xml</str>
    </lst>
    </requestHandler>
  2. Buscar en ese mismo archivo, la sección donde dice dataDir para renombrar el nombre de la carpeta donde se guardará el índice para evitar sobreescritura por parte de los demas índices, sustituir NOMBRE_WEBAPP por el nombre de la aplicación:
    <dataDir>${solr.data.dir:./solr/data-NOMBRE_WEBAPP}</dataDir>
  3. Crear en la misma carpeta (RUTA_WEBAPP/conf/) un archivo con el nombre data-config.xml con el siguiente contenido, recuerden modificar las credenciales de la conexión de la base de datos por las usadas en su caso:
    <dataConfig>
    <dataSource type="JdbcDataSource" name="solr"
    driver="com.microsoft.sqlserver.jdbc.SQLServerDriver"
    url="jdbc:sqlserver://IP_SERVIDOR_BD;databaseName=NOMBRE_BD"
    user="NOMBRE_USUARIO" password="CONTRASENA"/>
    <document name="NOMBRE_BUSQUEDA">
    <entity name="NOMBRE_BUSQUEDA" dataSource="NOMBRE_BUSQUEDA" query="SELECT id,content AS Txt FROM TableTest">
    <field column="id" name="DataID"/>
    <field column="Txt" name="Txt"/>
    </entity>
    </document>
    </dataConfig>

    En este paso se deben explicar algunas cosas, las cadenas dataSource,entity y document deben tener el atributo name, con ello Solr identifica esta fuente de datos con el indice, es recomendable usar el mismo para evitar problemas. La cadena entity debe tener el atributo dataSource, con el nombre de la fuente, con esto relaciona ambos. Ademas si observan la sentencia SQL, la misma devuelve 2 columnas: id y Txt (Txt la forzamos a llamarse asi mediante AS), las cuales serán usadas para crear el índice, por ello se deben crear tantas etiquetas field como columnas tengamos en la consulta, el nombre es personal y no es obligatorio llamarlas como el nombre de la columna.

  4. Editar el archivo schema.xml, buscar el bloque fieldsets por:
    <fields>
    <field name="DataID" type="string" indexed="true" stored="true"/>
    <field name="Txt" type="text" indexed="true" stored="true" />
    </fields>
    <uniqueKey>Txt</uniqueKey>

    Aquí se coloca una cadena field por cada cadena declarada en el archivo del paso anterior, cabe destacar la importancia del atributo type, no entro en detalles pero en este mismo archivo pueden leer los existentes, por ejemplo, string no permite búsqueda parcial a diferencia de text, así que analicen los tipos necesarios para cada columna.

  5. Deben reiniciar el servicio de Apache Tomcat con el fin de actualizar la información de la webapp y Solr pueda crear los índices.

Una vez realizado estos pasos, se puede proceder a indexar el contenido. Si desean agregar mas índices, repitan los pasos de Configuración de la Webapp con Solr, cambiando el nombre de la aplicación, carpeta donde almacenar los indices, nombre de consulta, entre otros.

Espero que esta guía les haya servido de gran ayuda.

Duke Nukem Forever ya tiene fecha de lanzamiento

Luego de 14 años de desarrollo, problemas, cancelaciones, cambio de motor, obsolencia de tecnología. Llega Duke Nukem Forever, al parecer esta vez si es oficial su lanzamiento para el 3 de Mayo del 2011. Hasta ese día no creeré que por fin se puede jugar este juegazo, pues recuerdo la primera vez que supe de él, tenia como 11 años y recuerdo estar triste porque decían que solo iba a salir para Nintendo 64 (ya han sacado 2 consolas y con poco tiempo para anunciar la 3 desde ese tiempo) y yo tenía solo PC, además, los rumores decían que iba a superar los gráficos de Quake 2 (hace 6 años salió Quake 4).

Sin embargo, tengo esperanzas en este juego debido a los 2 últimos trailers, en ambos se nota  como el  humor de los juegos anteriores se ha mantenido y ambos me han hecho reir, algo díficil de hacer en un videojuego (como lo dicen los creadores de Monkey Island: “Cualquiera puede asustar  o llorar a alguien en un videojuego, pero pocos pueden hacerte reir). Ahora falta esperar esa fecha para jugarlo y ver que tan bueno es.

Si desean leer más, entren en el artículo donde saqué el video.

RockMelt el navegador social

Hace unas semanas un pana me pasó una invitación para probar RockMelt, un navegador enfocado a las redes sociales, donde la idea es estar siempre conectado a las redes sociales y tener notificaciones casi en tiempo real de lo que sucede en cada una de ellas. Por ahora, solo se puede obtener a través de invitaciones obtenidas desde Facebook y solo está disponible para Windows y MacOs.

El navegador tiene una interfaz simple como la de todos los navegadores modernos (Chrome, Opera 11, Firefox 4 e Internet Explorer 9), pero con una barra a la izquierda con los contactos en línea en el chat de Facebook y al lado derecho una barra con las notificaciones de distintas redes sociales, el buscador está seperado de la caja de las direcciones y posee un botón para compartir la página actual.

Interfaz de Rockmelt

Interfaz de Rockmelt

Posee una caja de búsqueda separada como en Firefox, pero con la peculiaridad de abrir en un diálogo los resultados de búsqueda, me parece innovador y seguro a mucha gente le atraerá esta manera de buscar, además, usa el motor Webkit para renderizar las páginas al igual que Chrome y Safari, por lo que no debemos preocuparnos de que se vean mal ya que como pueden observar en el próximo pantallazo, pasa la prueba de Acid test 3 con 100/100.

RockMelt pasando el Acidtest

RockMelt pasando el Acidtest con 100/100 y observen como se despliega un dialogo con los resultados de búsqueda

El navegador tiene gran integración con Twitter y Facebook, con un solo clic podemos ver las actualizaciones de nuestros contactos o publicar la nuestra sin tener que entrar a una página nueva, pues todo se hace desde el navegador. Podemos ver noticias de Facebook o agregar nuestros propios canales para tener una especie de lector RSS embebido, muy útil para quienes quieren alternativas no web y no desean abrir una aplicación aparte.

Actualizaciones de Facebook desde RockMelt

Actualizaciones de Facebook desde RockMelt

Actualizaciones de Twitter desde RockMelt

Actualizaciones de Twitter desde RockMelt

RockMelt también soporta aplicaciones de Chrome Store lo que lo hace mas atractivo para los usuarios de Chrome con aplicaciones compradas, o también, para aquellas personas con deseos de migrar a un navegador social. Me parecio un excelente navegador y recomendado en situaciones donde uno se quiere comunicar con la gente o usarlo en el ocio, no es recomendable para el trabajo diario pues te hace perder mucho tiempo con las notificaciones, chats de amigos conectados en Facebook, etc. Pero si lo que quieres es perder el tiempo y socializar, no debes dejar de usar este navegador.

Geohot corriendo su aplicación en un Playstation 3 con firmware 3.55

Hace unas horas el famoso hacker Geohot ha logrado ejecutar su propia aplicación en un Playstation con firmware 3.55, probando que al desarrollar una aplicación y firmandola con la llave que él mismo liberó, se puede ejecutar sin problemas. Además, por la versión del firmware demuestra la posibilidad de hacerlo en futuras versiones, el no uso de PsFreedom (solo sirve para firmware 3.40 para atrás) y sin modificar el firmware (no parcheó lvl2).

Luego de casi 5 años de haber salido al mercado el Playstation 3, al fin podemos ver la ejecución de aplicaciones en esa poderosa máquina. Quien sabe que futuras aplicaciones veremos realizada por la comunidad homebrew del PS3.