Saltar al contenido

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript... y lo que venga ;)

17 años online

el blog de José M. Aguilar

Inicio El autor Contactar

Artículos, tutoriales, trucos, curiosidades, reflexiones y links sobre programación web
ASP.NET Core, MVC, Blazor, SignalR, Entity Framework, C#, Azure, Javascript...

¡Microsoft MVP!
domingo, 17 de septiembre de 2006
Si hay sistemas que vistas al usuario parecen no evolucionar con el tiempo, éstos son, sin duda, los buscadores. Hace años estamos viendo sus pobres interfaces, normalmente basados en un cuadro de texto y un botón "Enviar" o, a lo más, una lista de categorías de enlaces; introduciendo el término a localizar, aparecen ante nuestros ojos una lista de sitios web recomendados, a veces con más y otras con menos tino. Y es que la evolución de los motores de búsqueda está normalmente por dentro, en forma de nuevos algoritmos, rankings, sugerencias, tipos de contenidos, y otros aspectos, normalmente invisibles para el usuario.

Chacha es un buscador de reciente aparición que aporta una nueva forma de búsqueda, un nuevo modelo de interacción, ya conocido por todos en otros entornos como el telefónico: la búsqueda guiada. Chacha pone a nuestra disposición una persona humana (valga la redundancia ;-)) que nos ayuda a localizar lo que andemos buscando, de la misma forma que, en vez de usar las guías amarillas podemos llamar a un servicio de atención telefónica y preguntarlo a los teleoperadores.

Esta mañana he estado conversando con un guía de Chacha. Más o menos la secuencia ha sido la siguiente (traducida del inglés):

Entro en chacha, tecleo la palabra "Zope" y pulso el botón "Búsqueda asistida".

(Collin): "Hola, soy tu asistente. Intentaré ayudarte a buscar lo que necesitas"
(YO): "Hola"
(Collin): "Hola. ¿En qué puedo ayudarte?"
(YO): "Es la primera vez que uso este servicio. ¿Es real?"
(Collin): "Sí, totalmente real. :-D"
(YO): "Entonces, ¿no eres un bot?"
(Collin): "Pues no, me llamo Collin y vivo en Washington"
(YO): "Impresionante. Yo soy de España"
(Collin): "Y ¿qué tal? ¿Te gusta el servicio?"
(YO): "Pues sí, me parece increíble que Internet nos siga sorprendiendo con este tipo de ideas"
(Collin): "Estupendo."
(YO): "¿Atiendes a mucha gente?"
(Collin): "Depende del momento. Ahora mismo está la cosa tranquila, pues es ya bastante tarde"
(Collin): "¿Puedo ayudarte en algo?"
(YO): "Busco información sobre Zope"
(Collin): "Un momento, a ver qué puedo encontrar"
Aparece el resultado de la búsqueda, un enlace a la definición "Zope" de la Wikipedia.
(Collin): "¿Te vale el resultado?"
(YO): "Bueno, buscaba algo menos básico, como información sobre programación con Zope".
(Collin): "Un momento..."
Aparecen varios resultados más, esta vez algo más afinados
(Collin): "Voy a seguir buscando, avísame cuando creas que es suficiente."
(YO): "Creo que me valen con esos, Collin."
(Collin): "Estupendo. ¿Puedo ayudarte en algo más?"
(YO): "De momento no, muchas gracias."
(Collin): "Hasta la vista."
(YO): "Bye"

Al finalizar la sesión, una página recoge los resultados ofrecidos por el asistente, los recursos utilizados para encontrarlos (Google en este caso) y un cuadro en el que puedo valorar el servicio ofrecido por mi amigo Collin. De hecho, si entráis en Cacha y realizáis la consulta "Zope", el resultado que aparece a día de hoy es el que me ha dado este asistente.

Desde luego, no se puede negar la humanidad que aporta este servicio a algo tan cotidiano y tremendamente automatizado como es la búsqueda por Internet. En cuanto a los resultados, obviamente mejorables, puesto que una persona no necesariamente experta en el ámbito de nuestra búsqueda puede enviarnos a sitios insospechados y de dudosa calidad, pero bueno, al menos lo intentan. Además, se supone que las búsquedas son almacenadas e irán, con el tiempo, refinándose gracias a las valoraciones de los usuarios y, por qué no, a la experiencia de sus operadores.

En resumen, no creo que cambie mi buscador habitual por este, pero sí que es verdad que puede resultar interesante para lobos solitarios y personas que, en general, prefieran la conversación a la introducción de criterios, lo humano a lo electrónico, aún asumiendo las imperfecciones en las respuestas inherentes a la primera opción.

Etiquetado como: ::::::::
sábado, 16 de septiembre de 2006
Después de probar varios gestores de contenidos (CMS), siempre basados en el polinomio LAMP (Linux+Apache+MySQL+PHP), he pensado que sería una buena idea analizar la instalación y funcionamiento de algún otro cuya base tecnológica fuera diferente.

Una opción bastante razonable es, sin duda, OpenCMS. Este veterano gestor de contenidos está basado en Java y XML, utilizando como almacén de datos el celebérrimo MySQL, lo cual contribuye al carácter multiplataforma del producto. Por cambiar un poco, vamos a instalarlo sobre un Windows XP Professional limpio, a ver qué tal resulta la experiencia, y en este post iré reflejando cada paso a dar hasta ponerlo en marcha.

Antes de comenzar: cumplir los requisitos

Es una buena costumbre antes de iniciar una instalación de este tipo repasar la lista de requisitos, normalmente disponible en el sitio web de los desarrolladores del producto. En este caso encontramos que OpenCMS necesita:

  • Java 2 SDK. Curiosamente, no es suficiente con la JRE, es necesario instalar el kit de desarrollo completo, señal de que se realizarán compilaciones al vuelo. Las notas de revisión recomiendan la versión 1.4 o superior; para ir a la última nos decantaremos por la 1.5, la más reciente, disponible para descargar en http://java.sun.com/javase/downloads.
  • Contenedor de servlets que responda a los estándares Servlet 2.3 / JSP 1.2. Vamos a instalar Tomcat, que es la implementación de referencia oficial para dichas tecnologías. La descarga de la versión 5.5 podemos realizarla desde la dirección http://tomcat.apache.org/download-55.cgi.
  • MySQL como sistema gestor de bases de datos, que podemos obtener desde http://dev.mysql.com/downloads/index.html.

La instalación de Java no supone ninguna dificultad, simplemente la habitual serie de clics sobre el botón "Aceptar" en un asistente de instalación típico.

Tomcat, por su parte, ofrece también un sencillo asistente que nos permitirá poner en funcionamiento este software en pocos segundos. He dejado todos los parámetros como aparecen en el instalador (concretamente el directorio de instalación, puerto de acceso http, y el nombre de usuario y contraseña del administrador), y tras el par de clics de rigor, podemos observar en el área de notificación el icono indicando que Tomcat está en ejecución.

MySQL, como no podía ser de otra forma, proporciona también un instalador que hace que su puesta en marcha sea un juego de niños. Tras finalizar la copia de archivos, se inicia de forma automática el "Instance Configuration Wizard", que permite realizar ajustes en la instancia de la base de datos antes de ponerla en marcha. Existen multitud de opciones a elegir, sin embargo, en este caso, he seleccionado las propuestas por el sistema salvo en el juego de caracteres, donde he optado por UTF-8, para dar soporte a lenguas no occidentales. Dado que esto es una máquina para hacer pruebas, no he tenido en cuenta nada relacionado con la optimización del espacio a ocupar, el rendimiento o aspectos parecidos. Eso lo dejamos para máquinas que vayan a entrar en producción, que no es nuestro caso.

Para comprobar que el motor está instalado y en funcionamiento, podemos ejecutar el cliente de línea de comandos que podemos encontrar en el menú Inicio > Programas > MySQL. Una vez introducida la contraseña de administrador que le hemos suministrado con anterioridad, estaremos conectados al SGBD.

Pero ojo, según recomiendan, es conveniente modificar el archivo de configuración, "My.ini", disponible en el directorio donde se haya instalado MySQL y modificar el parámetro max_allowed_packet asignándole el valor "16M". Sin embargo, en instalaciones simples del motor de datos, esta variable ni siquiera existe, por lo que es necesario crearla a mano en el fichero de configuración. Es sencillo, basta con localizar la sección [mysqld] (en mi caso se encuentra sobre la línea 75) y añadir una nueva línea tal y como se recoge en el siguiente recorte:


[...]
# SERVER SECTION
# -----------------------------------------------
# The following options will be read by the MySQL
# Server. Make sure that you have installed the
# server correctly (see above) so it reads this
# file.
#
[mysqld]

# The TCP/IP Port the MySQL Server will listen on
port=3306
max_allowed_packet = 16M # Nueva línea !!!!

#Path to installation directory. All paths
# are usually resolved relative to this.
[...]




Al grano: instalando OpenCMS.

Ya tenemos la infraestructura necesaria para comenzar la instalación de OpenCMS. En primer lugar, descargamos la versión más reciente del software, dispensada en un archivo .zip descargable desde la web oficial. La actual, numerada como 6.2.2, pesa unos 27Mb.

En su interior podremos encontrar un archivo llamado "opencms.war" que debe ser copiado la carpeta "Webapps" existente en el directorio donde se haya instalado Tomcat. En mi caso la ruta completa es C:\Archivos de programa\Apache Software Foundation\Tomcat 5.5\webapps.

Acto seguido, reiniciamos Tomcat. Esto puede hacerse de varias formas, pero lo recomendable en este momento es pulsar con el botón derecho del ratón sobre el icono del servicio (junto al reloj), deterner el servicio y volver a iniciarlo. Esto provocará que OpenCms entre a formar parte de las aplicaciones instaladas en Tomcat y podamos acceder con el navegador al asistente de instalación utilizando la url http://localhost:8080/opencms/setup.

Una vez aceptado el texto de licencia, que por otra parte no recuerdo haber leído nunca ;-P, el asistente mostrará el resultado de una evaluación del equipo. Como hemos hecho perfectamente los deberes, todos los indicadores aparecen en verde indicando que cumplimos con los requisitos exigidos para correr OpenCms.

Acto seguido, el sistema nos preguntará sobre aspectos relacionados con la base de datos: motor y versión instalado, datos del usuario de acceso general, usuario de acceso para OpenCms y nombre de la BD a crear. En mi caso sólo ha sido necesario retocar los passwords de acceso para los usuarios, el resto lo he dejado todo con los valores por defecto.

El resto de pasos del asistente consisten en la consabida serie de clics siguiente... siguiente... siguiente..., mientras vamos desfilando por pantallas donde se nos pregunta qué módulos queremos instalar (¡vaya pregunta! ¡pues todos, por supuesto! ;-D) o el nombre del servidor, entre otros detalles.

Tras una espera de varios minutos mientras se instalan los módulos durante la cual nos arrepentimos varias veces de haber seleccionado "todos" en el asistente, aparecerá un mensaje indicándonos que todo ha ido como esperábamos, perfecto.

A partir de este momento, podemos acceder al portal OpenCms a través del enlace que el propio asistente de instalación nos muestra, donde aparecerá una página inicial de bienvenida, así como información para acceder al Workplace, o en otras palabras, a la aplicación de administración de la plataforma, también basada en Web y que tiene muy buena pinta.

Ea, pues misión cumplida, esto está en funcionamiento.



Etiquetado como: ::::::
miércoles, 6 de septiembre de 2006
Estoy estrenando Haloscan, un sistema on-line de gestión de comentarios y trackbacks para blogs. Se ha instalado él solito, sólo he tenido que indicarle mi usuario y contraseña de Blogger y él mismo ha insertado los cambios en la plantilla e incluso un post diciendo esto:

commenting and trackback
have been added to this blog.


En fin, a ver si alguien se anima y estrena el nuevo sistema haciendo un comentario, un trackback o lo que sea. Bueno, o mejor, para no esperar, los haré yo mismo.

La pena es que los comentarios que tenía hasta el momento, aunque eran escasos, todavía no sé muy bien dónde han ido a parar... tendré que investigar un poco.

martes, 5 de septiembre de 2006
Leyendo el blog http://google.dirson.com/index.php sobre noticias de Google en español, llego a una curiosa aplicación que esta compañía ha puesto en marcha, como otras, en fase beta: Google Image Labeler.

Se trata de un juego bastante entretenido, programado con AJAX a tope (como de costumbre en la casa), que está accesible a través de la dirección http://images.google.com/imagelabeler/, aunque de momento sólo en inglés. La mecánica es muy simple: el sistema selecciona al azar un usuario que en ese momento esté conectado, que será nuestro compañero de juego, y a partir de ese momento, irán apareciendo, tanto a él como a nosotros, imágenes que debemos describir sugiriendo etiquetas (labels) que las describirían; cuando alguna de las palabras que enviamos coincide con una de las aportadas por nuestro partner, obtendremos puntos y el sistema pasará a la siguiente imagen. Y así durante 90 segundos.

Esto no pasaría de ser una pequeña curiosidad sin demasiada relevancia, si no fuera por el verdadero objeto del sistema: llenar las bases de datos de información sobre las imágenes, y parece ser que con el único fin de entrenar sus sistemas expertos de reconocimiento automático, los que, según comentan, revolucionarán los motores de búsqueda de imágenes en un plazo relativamente breve.

La idea del etiquetado humano de imágenes no es nueva, ha sido y está siendo utilizada en otros proyectos como el ESP Game, donde a día de hoy se han recogido cerca de 18 millones de etiquetas que son utilizadas en su propio buscador. Sin embargo, esto presenta una importante limitación: la actualización. Cada vez que se registra una nueva imagen es necesario que alguien la etiquete, lo cual no siempre es factible.

Conscientes de este inconveniente, los chicos de Google han debido llegar a la conclusión de que la catalogación de imágenes para facilitar las búsquedas debe ser resuelta en su totalidad de forma automática, es decir, utilizando software. Por ello están adquiriendo compañías especializadas en tratamiento digital de imágenes, haciéndose de aplicaciones existentes y, a veces, desarrollando sus propios sistemas, con objeto de disponer de software capaz de reconocer patrones en imágenes, detectar elementos, textos (no olvidemos el famoso proyecto de OCR en el que también están trabajando), personas u otros objetos en imágenes y siempre sin intervención humana.

La originalidad está en utilizar las palabras obtenidas con el juego simplemente para hacer baterías de pruebas automatizadas que les permitan afinar este software. Genial, ¿no?

Habrá quien se pregunte que cómo de fiables pueden ser las etiquetas teniendo en cuenta la diversidad y anonimato de los jugadores/colaboradores. Y, sin duda, cabe cierto margen de error, aunque pensándolo un poco, el juego está ideado para minimizar estos problemas: la elección aleatoria del compañero o el puntuar (y almacenar) las palabras coincidentes son muestras de ello.
viernes, 25 de agosto de 2006

Joomla es uno de los CMS open source más usados en la actualidad debido a su sencillez y potencia para la creación de portales, sitios web dinámicos o aplicaciones basadas en Internet. En este post iré recogiendo "en tiempo real" los pasos que voy siguiendo para montar en un servidor un sitio basado en este gestor, de forma que pueda servir como guía para posteriores instalaciones.

Partimos de una distribución basada en Debian (Ubuntu), con Apache 2, PHP y MySQL instalados y funcionando de forma correcta.

25 de Agosto de 2006.
Diario de una instalación de Joomla.

16:39 - Inicio de actividades

Sin duda, lo primero que hay que hacer es documentarse. Pienso que no vendría mal una visita por el sitio web oficial de Joomla para ir tomando contacto. Un poco de lectura del típico qué es, para qué sirve, modelos de licencia, quiénes lo soportan, aunque la verdad es que me aburro pronto y prefiero pasar a la demo on-line donde se puede probar un portal entrando como usuario administrador (admin/admin). También es posible acceder a la parametrización y configuración de la plataforma añadiendo a la URL la ruta /administrator o pulsando sobre la correspondiente opción del menú.

En esta demo, salvo algunas limitaciones lógicas por motivos de seguridad, se permite tocar todo, y permite obtener una buena visión del potencial y capacidades de la herramienta.

17:18 - Comienzo de la instalación

Después del paseo anterior he decidido que, definitivamente, me lo voy a instalar. Google, que todo lo sabe, me dijo hace un rato que existe una comunidad hispana de Joomla! y allí he visto un enlace para descargar una versión de la plataforma localizada en español. Allá voy.

Se trata de un archivo .zip de poco menos de tres de megas, por lo que la descarga es prácticamente instantánea. Al abrir el archivo con FileRoller (el gestor de archivos comprimidos de Gnome) veo que se trata de una carpeta principal con archivos .php y varios subdirectorios. Uno de ellos, INSTALL.php me hace pensar que la instalación se realizará desde entorno web, una técnica muy de moda actualmente.

El servidor apache, según su instalación por defecto, asume que el directorio raíz del sitio http://localhost se en cuentra en la ruta física /var/www. No tengo intención de modificar la configuración de Apache, así que decido que mi portal Joomla se encontrará en un subdirectorio del raíz, por ejemplo, http://localhost/joomla. Debo crear, pues, este directorio dentro de la carpeta /var/www citada anteriormente.

Descomprimo los ficheros sobre mi flamante nueva carpeta con FileRoller (aunque también podría haberlo hecho desde un shell, ejecutando unzip [ruta del archivo .zip] desde el directorio destino). Justo después de terminar, ya es posible acceder a la URL local elegida para comenzar el proceso de instalación.

17:32 - Asistente de instalación, comprobaciones iniciales

La pantalla que aparece al acceder por primera vez con el navegador (recordemos: http://locahost/joomla) es el resultado de un análisis automático de los prerequisitos para la instalación del sistema, divididos en tres grupos:

  • Pre-instalación, que comprueba que la versión de PHP es correcta y dispone de soporte para ciertas tecnologías utilizadas, así como los permisos de escritura de datos de sesión y el archivo de configuración (configuration.php). En mi caso el archivo de configuración no puede ser escrito, lo cual debe ser un problema, dado el color rojo chillón elegido para informar de ello, aunque también indica que todavía la instalación puede continuar; sigamos, pues.
  • Ajustes recomendados, que hace referencia a la configuración de PHP. Como me aparece todo correcto, no le presto más atención.
  • Permisos de carpetas, donde tengo un pleno. Todo rojo. El instalador, además, indica que es necesario modificar los permisos de estas carpetas para que todo funcione bien, así que desde un shell hago un chmod 777 [carpeta] para cada una de ellas, con lo que otorgo permisos generales de lectura, escritura y ejecución. Uff, supongo que un experto en seguridad premiaría con algunas collejas esta falta de celo, pero bueno, qué diantres, estoy en mi casa (servidor) y hago lo que quiero ;-). Para los perezosos, ahí van los comandos empleados; he preferido hacerlo uno a uno para evitar una llamada a chmod de forma recursiva e indiscriminada.

    chmod 777 administrator/backups/
    chmod 777 administrator/components/
    chmod 777 administrator/modules/
    chmod 777 administrator/templates/
    chmod 777 cache/
    chmod 777 components/
    chmod 777 images/
    chmod 777 images/banners/
    chmod 777 images/stories/
    chmod 777 language/
    chmod 777 mambots/
    chmod 777 mambots/content/
    chmod 777 mambots/editors
    chmod 777 mambots/editors-xtd/
    chmod 777 mambots/search/
    chmod 777 mambots/system/
    chmod 777 media
    chmod 777 modules
    chmod 777 templates

Una pulsación sobre el botón "comprobar de nuevo", situado en la zona superior de la página, hace que se refresque el resultado del análisis, y se puede comprobar que todo está ya correcto, salvo el problema (obviable, de momento) del primer bloque de comprobaciones.

17:48 - Asistente de instalación, Licencia

Pulsando "Siguiente" pasamos a una página cuyo único objetivo es mostrar el texto de licencia GNU/GPL. Vaya, interesante es un rato, pero en estos momentos prefiero seguir instalando el software. Este tipo de contenidos, que estamos acostumbrados a encontrar cada vez que montamos un nuevo software, libre o propietario, son bastante largos y densos, y supongo que pocos son los que se paran ante ellos. En cualquier caso, seguro que todos conocemos el modelo GPL y estamos completamente de acuerdo con él, así que continuamos.

17:51 - Asistente de instalación, Paso 1 (MySQL)

Bueno, pues se va poniendo cada vez más interesante... Ha llegado el momento de indicar dónde y cómo se accede al servidor MySQL sobre el que recaerá la responsabilidad de almacenamiento de datos.

En el formulario que tenemos que rellear, dado que tenemos nuestra propia copia de MySQL en la máquina local, indicaremos que el servidor es "localhost". El nombre de usuario y contraseña no los he cambiado desde la instalación del motor, por lo que será "root" con clave en blanco (nueva colleja). Como nombre de la base de datos elegimos Joomla, por ser originales, y el resto de datos los dejamos como están.

Pulsando "siguiente" y aceptando una ventanilla de confirmación, el sistema creará la estructura sobre MySQL y mostrará el siguiente paso del asistente.

17:55 - Asistente de instalación, Paso 2 (Nombre)

Este es de los fáciles. Pongamos un nombre a nuestro sitio web... ummm... esto es siempre lo más difícil... además, seguro que todos nos preguntamos ¿se podrá cambiar más adelante?... estoooo.... venga, adjudicado, creatividad al poder, "Pruebas Joomla". :-D

17:58 - Asistente de instalación, Paso 3, (URL, administrador y otros)

Es momento de confirmar al sistema lo que él ya sabe, la URL de acceso y la ruta física de los archivos Joomla. Los dejamos tal y como están, introducimos el email y contraseña del administrador y seguimos adelante.

17:58 - Asistente de instalación, Paso 4 (Fin)

¡Parece que hemos acabado! El sistema nos felicita por la gran instalación realizada, nos recuerda que el usuario de acceso será "admin", y la contraseña la elegida en el paso anterior, y nos pide que realicemos las siguientes operaciones:

  1. Eliminar de forma manual el directorio de instalación. Como supongo que se refiere a la carpeta /var/www/joomla/installation, así lo hago.
  2. Crear un archivo llamado "configuration.php" e introduzca en él el texto que nos suministra en un cuadro. Ahora entiendo lo que significa la alerta del paso de pre-instalación. Cojo mi editor favorito, pego el texto indicado, y lo salvo en la carpeta raíz de Joomla.

Voilá. Esto está listo. En la parte superior hay dos enlaces: web y administración. El primero de ellos nos llevará a la parte pública del portal, mientras que el segundo nos permitirá acceder a la administración y configuración. Así, podremos ver que la instalación ha creado por nosotros una web con contenidos de ejemplo, que nos ayudará a hacernos con el entorno más rápidamente.

A partir de aquí, queda pelear con el área de administración y las plantillas (templates) hasta tener la versión definitiva de lo que será nuestro sitio web basado en este magnífico gestor de contenidos.

Feliz Joomling.

domingo, 20 de agosto de 2006
¡Bueno, pues ya estamos de vuelta! Salvo la obligatoria depresión debida al síndrome post-vacacional con el que probablemente nos bombardearán en los telediarios a partir de esta misma semana, sólo me quedan de estas vacaciones buenos recuerdos y la agridulce sensación de que han acabado las que, sin duda, han sido las mejores de mi vida.

Pero en fin, como es sabido que todo lo bueno acaba, lo mejor es tomarlo con filosofía y prepararnos para un año que seguro será duro, pero traerá alegrías personales y profesionales. Las pilas están cargadas, y preparadas para ello.

Nos vemos por aquí.