El pasado jueves liberé la nueva versión de mi plugin para mostrar los archivos de un blog wordpress de manera compacta, con efectos de animación jQuery al momento de expandirlos y navegar sobre ellos. Si tienen un blog wordpress por muchos años y les molesta el tamaño del widget de archivos, les recomiendo utilizar este plugin.

En esta versión 1.2, ahora los archivos se expanden automáticamente dependiendo de la página que estemos visitando. Esta funcionalidad fué agregada en gran parte a un parche enviado por Michel Westergaard que me ayudó mucho a programar esta funcionalidad.

Para mas información pueden ver la página del plugin en WordPress.org o aquí en mi blog. Si les gusta, por favor le dan 5 estrellas o hacen una donación para contribuir con el desarrollo del mismo.

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.

Hace unas semanas hice un plugin para wordpress, donde se imprime una lista de las categorías de forma compacta y expandible mediante animaciones  jQuery, pues hoy he liberado la versión 1.1 del mismo, con la novedad que ahora pueden excluir del listado las categorías que deseen. Esta característica fue agregada debido a la solicitud de varios usuarios del plugin y expandir las posibilidades de uso de este plugin.

Para instalarlo pueden ir a su página oficial o actualizar desde el mismo gestor de actualizaciones de WordPress. Si no lo han probado, se los recomiendo y recuerden votar por él.

Este es mi segundo plugin para WordPress, creado por solicitud de varios usuarios quienes pidieron tener un plugin similar a jQuery Archive List pero para mostrar las categorías de un blog. Básicamente es el mismo plugin a diferencia que muestra las categorías y la configuración es un poco distinta. Entre las características que ofrece son:

  • Incluye un Widget para mostrar las categorías, con opciones para desplegar en caso de la existencia de subcategorías.
  • Filtro para llamar mostrar el listado usando [ jQuery Categories List ]
  • Utiliza la librería de jQuery incluida en WordPress.
  • Código JS separado en un archivo para mejorar el rendimiento.
  • Opciones para mostrar cantidad de entradas, seleccionar como se ordenan las categorías, simbolos a usar, etc.
  • Soporte para i18n, aunque actualmente solo esta disponible en: Español, Inglés.

Si quieren ver como lucen, simplemente miren como ésta página muestra las categorías y chequeen la compatibilidad del mismo. Si les gustó, voten por 5 estrellas, voten por la compatibilidad y donen para seguir trabajando en estos plugin.

Actualizacion v1.1

  • Soporte para excluir categorías de la lista.

Para descargalo, utilicen el gestor de plugins incluido en su instalación WordPress o desde la página oficial.

Contribuye con la creación de este plugin

Luego de 11 meses sin prestarle atención, esta semana decidí dedicarle un tiempo a mejorar este plugin de WordPress. Me dí cuenta que tenía sugerencia por parte de algunos usuarios para agregar características, mejorar unas existentes y otras cosas que tenía en mente. Al revisar me di cuenta de la mala escritura del código (recuerdo haberlo creado rápidamente en base a otro parecido) por lo que re-escribí completamente el plugin para adaptarse al estándar de WordPress, mejorar el mantenimiento del mismo, agregar soporte de internacionalización, mejorar la carga de los archivos Javascript.

Pues el resultado es la versión 1.0 de este plugin para mostrar el historial/archivo de las entradas de blog en una lista que se contrae y expande con efectos de jQuery, para mayor usabilidad, ahorro de espacio y mas interacción. De hecho, ese plugin esta siendo usado en esta página para mostrar los archivos de entradas en forma simplificada.

Los cambios realizados en esta versión son:

  • Se agregó soporte para el formato del mes (corto, número, completo).
  • Se puede mostrar el listado de archivos dentro de Páginas y Entradas, simplemente escribiendo [ jQuery Archive List ] en cualquier lado del contenido.
  • Se agregó soporte para i18n, así pueden traducir la interfaz de administración a cualquier idioma soportado por WordPress.
  • Se separó todo el código Javascript del código HTML, con este cambio, los navegadores deberían tener en caché estos archivos y procesarlos de manera mas óptima.
  • Se carga automáticamente la librería JS de jQuery.
  • Casi todo el código fue re-escrito para facilitar el mantenimiento y permitir agregar fácilmente nuevas características.
  • Se mejoró el código para mantener el estándar de WordPress.

Pueden descargarlo desde su página oficial en WordPress. Si les gusta recuerden recomendarlo, votar con una puntuación de 5 estrellas o hacer una donación para continuar con el desarrollo del mismo.

Secrets of the JavaScript Ninja, es un libro escrito por el famoso John Resig, (Si eres un desarrollador web deberías saber quien es) creador de jQuery, la grandiosa librería Javascript que facilita enormemente el desarrollo con Javascript.

Hace unos días lo terminé de leer y me gustó mucho, me parece un libro recomendado para todo desarrollador que trabaje con Javascript (recordemos que jQuery no es lo mismo que Javascript), los ejemplos y temas estan dirigidos a programadores con experiencia media o avanzada en el lenguaje, en mi caso, me considero un novato en este lenguaje y logré aprender mucho pero varios temas no los pude entender bien o tenía que leerlo varias veces para captar la idea, sin embargo, si son nuevos con este lenguaje también es bueno leerlo, porque enseña a ver las cosas distintas y como aprovechar la resolución de algunas cosas desde un punto de vista donde se toma ventaja de las características únicas de Javascript, o bien sea problemas existente pero como adaptarlo a las posibilidades de JS.

Los principales temas abarcados por el libro son: tips para mejor desarrollo de scripts, como crear una libería JS, funciones para facilitar ciertas operaciones, ejecuciones de pruebas, creación de código compatible con varios navegadores y muchos mas. Así que, si trabajan con este lenguaje, desean aprender y les gusta leer, compren esten libro que les será muy útil.

Microsoft WebMatrix es una nueva herramienta destinada a la creación de página o sistemas web sencillas por parte de nuevos desarrolladores/diseñadores (y porque no, también profesionales experimentados), lo interesante de ella es que centraliza todas las herramientas básicas en una sola interfaz muy sencilla de usar, (con Eclipse y Netbeans se puede lograr lo mismo pero no es por defecto y para un nuevo usuario puede ser díficil configurar la interfaz).

La instalación es sencilla, se realiza mediante el Web Launcher de Microsoft y con tan solo seleccionar WebMatrix, se instalarán sus dependencias correspondientes: SQL Server Compat, IIS (uno básico si no tiene una edición de Windows con IIS incluido) y otras cosas ahí. La interfaz utiliza el ya famoso Ribbon (la misma de Office 2k7 y la mayoría de programas de Windows 7) donde mediante pestañas veremos una vista general del proyecto, los archivos en el proyecto junto al editor, la vista de Base de Datos para crear tablas y realizar consultas y la de SEO o como yo la llamaría: vista de validación de código.

Editor HTML de WebMatrix

La vista de archivos, trae las típicas funciones de cualquier editor HTML junto a controles para iniciar/reiniciar/detener los servicios web y de base de datos. El editor es muy parecido al de Visual Studio pero no se si fué por falta de configuración o porque no lo soporta, no me completó codigo ni HTML ni Javascript cosa que me pareció muy desfavorable pues casi todos los editores existentes lo hacen por defecto, sin embargo, puedes lanzar Visual Web Developer (supongo solo si lo tienes instalado) para realizar estas operaciones pero ya pierde el sentido el uso de esta aplicación.

Vista de Base de datos de WebMatrix

La vista de Base de Datos es una versión reducida de SQL Server Management Studio, permite crear tablas, relaciones, editar las propiedades de los campos, etc. La desventaja es que usar SQL Server Compat y pues bueno, para páginas pequeñas sirve pero seria mejor usar o que detectara SQL Express, pero para el fin de esta herramienta es suficiente esta versión de Base de Datos.

Validación SEO de WebMatrix

La vista/opción que me llamó la atención fue la de validación de SEO, el cual realiza un análisis del código que has escrito en busca de errores del estándar web y posibles malas prácticas donde se afecte tu SEO. Me impresionó que ahora Microsoft apoye esto luego de varios años intentando crear su propio estándar, supongo que esta estrategia les permite luchar contra la competencia y con el futuro lanzamiento de Internet Explorer 9 (prometiendo gran soporte para los estándares web establecidos actualmente), les permite a sus clientes crear páginas que se vean bien en este navegador (y obviamente en el resto de navegadores)

Realmente, WebMatrix es una herramienta sencilla pero completa, la recomiendo para aquellos que se estan iniciando en el desarrollo web y no quieran inicialmente aprender mucho sobre ello, su interfaz es sencilla, incluye las herramientas mínimas para trabajar, trae unas plantillas iniciales (si tienes Internet) y te da la posibilidad de migrar ese proyecto a Visual Studio.

Sin embargo, si quieres aprender bastante sobre desarollo web y/o no deseas utilizar herramientas propietarias (o no tienes Windows), yo recomiendo instalar un servidor WAMP (LAMP si usas Linux) junto a Aptana ó Netbeans, ya que con un poco mas de esfuerzo podrás crear aplicaciones mas poderosas, ademas, a diferencia de WebMatrix estas son multiplataforma y de código abierto.