viernes, 28 de septiembre de 2007

AutoCad?

El otro día hubo una importante tormenta eléctrica y los condensadores de mi placa base dijeron basta. Afortunadamente fueron los condensadores y lo cosa no pasó a mayores, así que mis discos duros sobrevivieron.

Monté los discos en otro equipo y puedo acceder a todos los datos, pero me quedé sin todo el software instalado.

Uno de los programas que tenía instalado era AutoCad y casualmente necesitaba hacer un diseño mecánico con urgencia.

Podía buscar el cd de instalación y volverlo a instalar, pero en vez de eso me dije: "Pero si tengo el GoogleSketchUp en la web y gratis!!!".

Me lo bajé en el equipo, lo instalé e hice mi diseño en cuatro patadas.


Lo hice directamente en 3D, lo acoté, lo modifiqué y vi que era paramétrico y las cotas dinámicamente se ajustaban a las nuevas dimensiones reales de la pieza. Una gozada.

Un único pero: la precisión. Como mucho puedo trabajar en milímetros, no puedes indicar unidades de trabajo menores, y los mecánicos solemos trabajar hasta con milésimas, pero fue cuestión de ajustar las medidas para cumplir con las holguras y ya está.

Está claro que todavía no es la herramienta ideal para el diseño mecánico, pero tiempo al tiempo.

Y es gratis.

Un saludo.

sábado, 15 de septiembre de 2007

GoogleSketchUp

Al hilo del mapa de vDessarrolladores que empecé en GoogleMaps seguí estudiando alguna de las herramientas que Google está dejando a disposición de la comunidad y me topé con GoogleSketchUp, una herramienta de diseño 3D gratuita, fácil, sencilla e intuitiva.

Despertó en mí la añoranza de viejos tiempos cuando diseñaba con AutoCad y 3DMax, y me llamó mucho la atención el nombre de la herramienta SketchUp.

Quién cuando era pequeñito no ha dibujado con el Telesketch, y lo más fuerte, la primera aplicación de diseño que utilicé en mi por entonces flamante PC Philips fue el AutoSketch, primitivísima versión del AutoCad moderno, que por cierto, aún existe!!!

Me animé a descargar GoogleSketchup y mientras miré unos videotutoriales en Youtube. Al finalizar la descarga me sorprendió la facilidad de uso del programa. En este aspecto se parece mucho a Velneo; te lo descargas y en 10 minutos ya tienes un desarrollo a medias.

Lo más interesante es su conexión con GoogleEarth.

Teniendo GoogleEarth abierto, navegas y seleccionas una vista zenital, en GoogleSketchUp le dices que la importe, y ya puedes empezar a diseñar tu edificio en 3D perfectamente integrado con el mundo virtual de GoogleEarth.

La forma más sencilla de hacer un edificio es disponer de fotografías del mismo que se pueden utilizar como textura de una "caja" que se amolde a la forma del mismo. Yo, como no disponía de fotografías del mío, pues lo hice a ojo y sin texturizar, sólo utilizado colores.

Aquí está la primera prueba que hice, descargable en 3DWareHouse.


3DWareHouse es el sitio de Google donde puedes subir tus creaciones 3D de SketchUp para compartir con la comunidad.

La idea a partir de ahora es hacer los edificios emblemáticos Velneo y subirlos, para que así toda la comunidad pueda disponer de ellos al navegar con GoogleEarth y sentir que Velneo realmente existe.

Life is soft!

miércoles, 12 de septiembre de 2007

Buscador web

Una de las herramientas imprescindibles hoy en día en cualquier web es un buscador sobre los contenidos de la propia web, algo así como un Google pero restringido a los contenidos de nuestra propia web.


Para ello vamos a necesitar varias cosas:

  1. Un gestor de contenidos de nuestra web, es decir, que el contenido de la web se extraiga de tablas. Si por ejemplo nuestra web es el catálogo de productos de nuestra empresa, lo primero es tener en bd la estructura de fichas de productos.
  2. Una variable global accesible web, llamémosla $TXT-BUSQUEDA$, que contendrá el texto a buscar en los contenidos.
  3. Un formulario web para que el usuario introduzca la cadena a buscar.
  4. Uno o varios índices sobre la tabla de productos para realizar la búsqueda por trozos de palabras, todas las palabras o por alguna de las palabras.
  5. La búsqueda en sí.
  6. Un proceso accesible web que reciba la variable global $TXT-BUSQUEDA$, lance la búsqueda y muestre el html de los resultados.

Vayamos por partes.

El gestor de contenidos de nuestra web lo vamos a reducir a una tabla PRODUCTOS. En esta tabla vamos a tener los siguientes campos: Nombre, Referencia y Descripción, por ejemplo, que son los campos sobre los que haremos que actúe el buscador.


Nombre es el campo Nombre que nos crea Velneo por defecto al crear una tabla nueva junto con sus índices Nombre, Palabras y Trozos. Podemos observar cómo están configurados estos índices para tomarlos como referencia a la hora de montar nuestros propios índices.

Referencia es un campo donde introduciremos un código formado tanto por letras como por números, es decir, la referencia del artículo.

Descripción será un campo alfabético de 500 caracteres de longitud, por ejemplo, donde introduciremos una descripción mucho más amplia sobre el producto en cuestión.

Como vamos a querer buscar sobre los tres campos anteriores a la vez, necesitamos un campo que aglutine el contenido de los tres. Así podemos crear un campo TXT-BUSQUEDA Alfa 40 de longitud 500, lo que nos da un total de 750 caracteres, con contenido inicial la concatenación de los tres campos anteriores en cuestión; "" + %NOMBRE% + " " + %REFERENCIA% + " " + %DESCRIPCION%

Ahora necesitamos, por hacerlo fácil, dos índices: uno para buscar por palabras y otro para buscar por trozos de palabras, es decir, por aproximación alfabética ternaria (pones un mínimo de tres letras y la búsqueda ya responde).

Para ello crearemos un nuevo índice PALABRAS-TEXTO-BUSQUEDA, por ejemplo, que será del tipo Palabras sobre el campo TXT-BUSQUEDA.

El segundo índice será TROZOS-TEXTO-BUSQUEDA, del tipo Aproximación alfabética ternaria sobre el mismo campo TXT-BUSQUEDA.

Con esto ya tenemos la estructura de bd necesaria para poder realizar la búsqueda.

Veamos ahora la búsqueda.


Crearemos un nuevo objeto búsqueda que llamaremos BUSCADOR. Esta búsqueda la vamos a configurar en principio para realizar una búsqueda por palabras, así incluiremos en la misma los índices CODIGO con Modo de búsqueda Todo el fichero, y como segundo índice el PALABRAS-TEXTO-BUSQUEDA en Modo Mezcla Cruzar.

Si como segundo índice de la búsqueda incluimos TROZOS-TEXTO-BUSQUEDA en Modo Mezcla Cruzar habremos configurado la búsqueda para que responda por ternas de caracteres.


En cualquiera de los dos casos, debemos indicar como contenido inicial del segundo índice en la búsqueda el contenido de la variable global $TXT-BUSQUEDA$.

Hago aquí un inciso para comentar las dos posibilidades que tenemos al utilizar el índice por Palabras en la búsqueda.

Si os fijáis a la hora de especificar el segundo índice de la búsqueda tenemos dos posibilidades: Todas las palabras o Alguna de las palabras. Qué quiere decir esto?

Si usamos Todas las palabras, estaremos haciendo una búsqueda tipo "Y"; que aparezca la palabra1 y la palabra2 y la palabra3.


Si en cambio usamos Alguna de las palabras, estaremos haciendo una búsqueda tipo "O"; que aparezca la palabra1 o la palabra2 o la palabra3.


Aclarado esto sigamos con nuestro buscador.


Ahora lo que vamos a necesitar es un formulario web con un campo donde el usuario introduzca la cadena de texto a buscar, y de valor a la variable global $TXT-BUSQUEDA$, y un botón BUSCAR.

Eso es algo tan simple como:

<form action="PROCESA-BUSQUEDA.PRO" method="post" name="busqueda" id="busqueda">
<input name="TXT-BUSQUEDA" id="TXT-BUSQUEDA" size="25" maxlength="150" type="text">
<input value="BUSCAR" type="submit">
<form>


Hay que fijarse en que el campo del formulario donde el usuario escribe la cadena a buscar se llama igual que la variable global $TXT-BUSQUEDA$ que va a contener esa cadena.

Otro detalle es que el botón submit del formulario no tiene nombre.

El action del formulario es el proceso PROCESA-BUSQUEDA.PRO


Este es el proceso accesible web que recibirá dentro de la variable global $TXT-BUSQUEDA$ la cadena a buscar. Dentro del proceso lo único que hemos de hacer es lanzar la búsqueda BUSCADOR, que directamente ya nos devuelve una lista de la tabla PRODUCTOS, donde se habrá encontrado la cadena $TXT-BUSQUEDA$ en alguno de los campos %NOMBRE%, %REFERENCIA% o %DESCRIPCION%.

El cómo mostrar los resultados de la búsqueda ya es cuestión de un componente html perteneciente a la tabla PRODUCTOS, que haciendo uso de las repeticiones <AVPR> muestre la lista de productos encontrados, algo como

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Resultado búsqueda</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<p>Resultado de la búsqueda</p>
<p>Se han encontrado #AVPn Productos con #AVP'cadena-a-buscar'</p>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td>NOMBRE</td>
<td>REFERENCIA</td>
<td>DESCRIPCION</td>
</tr>
<AVPR>
<tr>
<td>#AVP%NOMBRE%</td>
<td>#AVP%REFERENCIA%</td>
<td>#AVP%DESCRIPCION%</td>
</tr>
</AVPR>
</table>
</body>
</html>

En este ejemplo hemos visto cómo montar un buscador por palabras lo más sencillo posible.

Como ya hemos adelantado antes, esto se podría complicar más incluyendo campos en el formulario para que el usuario pudiese configurar la búsqueda para que actuase por Trozos de palabras, por Palabras y en modo "Y" u "O", habiendo incluido ambos índices en la búsqueda y condicionandolos en consecuencia, pero esto ya lo veremos otro día.

Life is soft!

lunes, 3 de septiembre de 2007

Servidor parado, servidor trabajando...

Por una de esas casualidades el otro día me dí cuenta de que podemos hacer trabajar al vServer aún teniendolo parado.

En mi casa tengo configurado el servidor para que no se ponga a la escucha al ejecutar el programa, es decir, arranco el servidor pero está parado.


Y en un mapa experimental donde tenía seis tablas; tres con datos y tres vacías, me dió por en el ONINIT-MAPSERVER cargar secuencialmente cada una de las tres tablas por uno de sus índices y ejecutar un tubo de lista entre cada una de las tablas con datos y su respectiva homóloga sin datos. Además, luego apuntaba una serie de punteros entre las tablas recién rellenadas.

Para mi sorpresa, al abrir la aplicación en el servidor parado, este empezó a realizar el trasvase de datos entre las tablas, para finalizar teniendo las tablas llenas y con los punteros creados, todo ello estando el servidor parado.

Puede ser una tontería o puro desconocimiento del funcionamiento de vServer, pero me resultó ciertamente sorprendente y aquí lo comento por si alguno de vosotros le puede ver la utilidad.

Life is soft!