Si necesitas un editor de textos para tu página Web, no te compliques la vida creándote uno porque... ya esta hecho! Se llama FCKeditor y además de disponer de todas las funciones típicas de un editor de textos, es compatible con todos los lenguajes Web (ASP.Net, ColdFusion, PHP, Java, Active-FoxPro, Lasso, Perl y Python).
La apariencia básica es la de la imagen, aunque puedes modificar el estilo para adaptarlo al de tu página. Pulsa en la imagen para ver la demo.
martes, 20 de noviembre de 2007
miércoles, 14 de noviembre de 2007
Control Listbox embebido en GridView
Si desarrollas en .NET, seguro que conoces el control GridView, que permite extraer datos directamente de la base de datos y mostrarlos de forma personalizada.
Además de los campos de datos (BoundField), en un GridView podemos tener cotroles de tipo Button, CheckBox, Command, HyperLink e Image, pero a veces nos puede interesar embeber otro tipo de controles, como por ejemplo un ListBox que a su vez se carge con datos de la BD. Para ello, tendremos que usar la propiedad y crear nosotros mismos el control como en el siguiente ejemplo: (click para ampliar)
Además de los campos de datos (BoundField), en un GridView podemos tener cotroles de tipo Button, CheckBox, Command, HyperLink e Image, pero a veces nos puede interesar embeber otro tipo de controles, como por ejemplo un ListBox que a su vez se carge con datos de la BD. Para ello, tendremos que usar la propiedad
Etiquetas:
ASP .NET,
Visual Studio 2005
Control GoogleMaps embebido
Que Google es algo más que un buscador es algo que todo el mundo sabe... Una de sus posibilidades es utilizar sus mapas para crearte uno a tu medida. Solo necesitas tener una cuenta de google y en la pestaña "Mis mapas" de http://maps.google.es/ pulsar en "Crear un mapa nuevo".
Las posibilidades son muy amplias; se puede crear desde un callejero turístico a un mapa de viajes como el que yo me hice:
Ver mapa más grande
Las posibilidades son muy amplias; se puede crear desde un callejero turístico a un mapa de viajes como el que yo me hice:
Ver mapa más grande
martes, 13 de noviembre de 2007
NUnit y TestDriven.NET
La programación extrema (XP, eXtreme Programming) es una de las técnicas con mas auge orientada a la mejora de la eficiencia en Ingeniería del Software.
XP se fundamenta en dos principios básicos:
NUnit tiene su propia interfaz gráfica mientras que TestDriven.net se integra en cualquier versión de Visual Studio y es compatible además con NUnit.


Para comenzar a utilizar estas herramientas recomiendo el tutorial de Giovanny Fernandez (en Español) en el que describe la sintaxis con ejemplos sacados de la documentación de NUnit.
XP se fundamenta en dos principios básicos:
- Desarrollo Dririgido por Pruebas (TDD, Test Driven Development)
- Programación por Pares (Pair Programming)
NUnit tiene su propia interfaz gráfica mientras que TestDriven.net se integra en cualquier versión de Visual Studio y es compatible además con NUnit.

Para comenzar a utilizar estas herramientas recomiendo el tutorial de Giovanny Fernandez (en Español) en el que describe la sintaxis con ejemplos sacados de la documentación de NUnit.
Etiquetas:
.NET,
eXtreme Programming,
ingenieria del software,
NUnit,
TestDriven.NET
miércoles, 7 de noviembre de 2007
Configuración de Crystal Reports para Visual Studio 2005 en Windows Server 2003
Crystal Reports es una herramienta muy útil para crear informes a partir de una base de datos.
En Visual Studio .NET 2005 se encuentra integrado una versión de esta herramienta que aunque funciona muy bien en "local", da más de un quebradero de cabeza al instalarlo en el servidor...
El error mas común, que al igual que a mi le sucedió a un montón de gente por la cantidad de foros que leí, es que no funciona la barra de Crystal Reports, o no se ven sus iconos. Los pasos que yo seguí para solucionarlo fueron:
- Crear un proyecto de instalación para el sitio web:
* Archivo - Agregar - Nuevo Proyecto...
* Otros tipos de proyecto - Instalación e implementación - Proyecto de programa de instalación Web - Aceptar
- Hacer click con el botón derecho en el proyecto de instalación creado (llamado WebSetup1 por defecto) y pinchar en Propiedades - Requisitos Previos y marcar "Crystal Reports para .NET Framework 2.0 - Aceptar
- Descargarse los "merge modules" (módulos de combinación) de la página de businessobjects
- Añadir los merge modules según el el pequeño tutorial que se descarga con los merge modules anteriores.
- Generar y publicar todo el sitio Web.
- Instalar en el servidor el WebSetup1.
- Veras que se ha creado la carpeta aspnet_client en C:\Inetpub\wwwroot. Ahora, lo único que hay que hacer es escribir las rutas de las subcarpetas en las propiedades ToolbarImagesFolderUrl y GroupTreeImagesFolderUrl del control CrystalReportViewer. Estas propiedades se deben ajustar en el evento PageLoad y dentro de un "if Not Page.IsPostBack...End If"
Esperemos que en la próxima versión de Visual Studio 2008 la integración de Crystal Reports sea mucho mejor y nos evite estos problemas...
En Visual Studio .NET 2005 se encuentra integrado una versión de esta herramienta que aunque funciona muy bien en "local", da más de un quebradero de cabeza al instalarlo en el servidor...
El error mas común, que al igual que a mi le sucedió a un montón de gente por la cantidad de foros que leí, es que no funciona la barra de Crystal Reports, o no se ven sus iconos. Los pasos que yo seguí para solucionarlo fueron:
- Crear un proyecto de instalación para el sitio web:
* Archivo - Agregar - Nuevo Proyecto...
* Otros tipos de proyecto - Instalación e implementación - Proyecto de programa de instalación Web - Aceptar
- Hacer click con el botón derecho en el proyecto de instalación creado (llamado WebSetup1 por defecto) y pinchar en Propiedades - Requisitos Previos y marcar "Crystal Reports para .NET Framework 2.0 - Aceptar
- Descargarse los "merge modules" (módulos de combinación) de la página de businessobjects
- Añadir los merge modules según el el pequeño tutorial que se descarga con los merge modules anteriores.
- Generar y publicar todo el sitio Web.
- Instalar en el servidor el WebSetup1.
- Veras que se ha creado la carpeta aspnet_client en C:\Inetpub\wwwroot. Ahora, lo único que hay que hacer es escribir las rutas de las subcarpetas en las propiedades ToolbarImagesFolderUrl y GroupTreeImagesFolderUrl del control CrystalReportViewer. Estas propiedades se deben ajustar en el evento PageLoad y dentro de un "if Not Page.IsPostBack...End If"
Esperemos que en la próxima versión de Visual Studio 2008 la integración de Crystal Reports sea mucho mejor y nos evite estos problemas...
Etiquetas:
ASP .NET,
Crystal Reports,
Visual Studio 2005
martes, 6 de noviembre de 2007
Tiempo de carga y rendimiento de una Web
Si eres un desarrollador Web, debería preocuparte el tiempo que tarda tu página en cargarse, ya que unos cuantos segundos pueden acabar con la paciencia del usuario y la consiguiente espantada de tu sitio.
Para comprobar el tiempo que tarda cualquier página en cargar con el detalle de cada uno de los elementos (y ver así cual/es están retardando mas la carga de tu página) existe la siguiente herramienta Web: Pingdom Tools - Full Page Test
Pero si lo que estas desarrollando es una herramienta Web susceptible de ser usada por varios usuarios a la vez, necesitarás realizar también pruebas de rendimiento. Para ello, Microsoft puso a disposición la herramienta gratuita Web Application Stress Tool, que puedes descargar aquí
Para comprobar el tiempo que tarda cualquier página en cargar con el detalle de cada uno de los elementos (y ver así cual/es están retardando mas la carga de tu página) existe la siguiente herramienta Web: Pingdom Tools - Full Page Test
Pero si lo que estas desarrollando es una herramienta Web susceptible de ser usada por varios usuarios a la vez, necesitarás realizar también pruebas de rendimiento. Para ello, Microsoft puso a disposición la herramienta gratuita Web Application Stress Tool, que puedes descargar aquí
Etiquetas:
Pingdom,
rendimiento,
Test Web,
Web Application Stress Tool
lunes, 5 de noviembre de 2007
Usar los controles de Google Maps con cualquier imagen
Los controles de Google Maps tienen una gran funcionalidad; permiten arrastrar y moverte por los mapas, hacer zoom, añadir marcadores con texto o incluso imágenes... pero más útil aún sería poder utilizar estos controles con una imagen nuestra en vez de con los mapas de Google.
Para hacer esto existe una herramienta Web llamada MapLib. Los pasos a seguir son los siguientes:
1. Registrarse en la página de MapLib
2. Subir la imagen que queramos en la pestaña "My Pictures"
3. Seleccionamos la imagen subida en "My Pictures" y pulsamos "View" para ver como quedaría la imagen dentro del control de Google Maps y añadir marcadores.
4. En la pestaña "Code" tenemos el código necesario para insertar nuestro "mapa" en nuestra página web.
Ejemplo:
Para hacer esto existe una herramienta Web llamada MapLib. Los pasos a seguir son los siguientes:
1. Registrarse en la página de MapLib
2. Subir la imagen que queramos en la pestaña "My Pictures"
3. Seleccionamos la imagen subida en "My Pictures" y pulsamos "View" para ver como quedaría la imagen dentro del control de Google Maps y añadir marcadores.
4. En la pestaña "Code" tenemos el código necesario para insertar nuestro "mapa" en nuestra página web.
Ejemplo:
Etiquetas:
Controles de google,
GoogleMaps,
MapLib
viernes, 2 de noviembre de 2007
Google Maps para ASP.NET 2.0
Hace poco más de un año salió a la luz el control GoogleMaps.Subgurium.NET en su versión 1.0 que actualmente se encuentra en la versión 2.6.2.
Con este control, que podemos descargar gratuitamente en http://googlemaps.subgurim.net/descargar.aspx, podemos embeber cualquier mapa de Google en nuesta página ASP. Con muy pocas líneas de código, y SIN necesidad de JavaScript, podremos personalizar los botones de zoom y desplazamiento, el centro del mapa, la dimensión e incluso incluir marcas e imágenes en cualquier lugar del mapa.
Para más información, ejemplos de código, foros y demás, debeis acceder al sitio Web en el siguiente enlace: http://googlemaps.subgurim.net
Con este control, que podemos descargar gratuitamente en http://googlemaps.subgurim.net/descargar.aspx, podemos embeber cualquier mapa de Google en nuesta página ASP. Con muy pocas líneas de código, y SIN necesidad de JavaScript, podremos personalizar los botones de zoom y desplazamiento, el centro del mapa, la dimensión e incluso incluir marcas e imágenes en cualquier lugar del mapa.
Para más información, ejemplos de código, foros y demás, debeis acceder al sitio Web en el siguiente enlace: http://googlemaps.subgurim.net
Etiquetas:
Controles de google,
GoogleMaps,
Mapas ASP.NET
miércoles, 31 de octubre de 2007
Creación de un reloj en AJAX
Para todos aquellos que trabajen con .NET es requisito indispensable tener conocimiento de AJAX. Para el resto, AJAX seguirá siendo el principal equipo de fútbol de Amsterdam, pero ese no es el tema...
AJAX (acrónimo de Asynchronous JavaScript And XML) es una técnica de desarrollo web para crear aplicaciones interactivas que permite la ejecución de Scripts en el cliente, ¡sin necesidad de recargas! Con esto se consigue un aumento de interactividad, velocidad y usabilidad.
Pero vayamos a lo práctico; lo que intentaré mostrar en este post es cómo crear un reloj digital usando AJAX, porque para hablar de AJAX ya tenemos la wikipedia o la página oficial de AJAX (en inglés) donde os podréis bajar las extensiones de AJAX, el kit de herramientas y algunos tutoriales.
Pues bien, lo único que necesitamos es añadir en nuestro formulario un ScriptManager, para que funcionen los Scrips de AJAX, y un UpdatePanel en el que introduciremos un Timer y un Label. Veamos el código del formulario:
asp:ScriptManager id="ScriptManager1" runat="server">/asp:ScriptManager>
asp:UpdatePanel id="UpdatePanel1" runat="server">
ContentTemplate>
<%--Cada 1000 milisegundos (1 segundo) llamamos al evento Timer1_Tick--%>
asp:Timer id="Timer1" runat="server" interval="1000" ontick="Timer1_Tick" enabled="false">
/asp:Timer>
<%--La siguiente etiqueta mostrará el reloj--%>
asp:Label id="LReloj" runat="server">/asp:Label>
/ContentTemplate>
/asp:UpdatePanel>
asp:label id="LHoraInicial" runat="server" text="Label">/asp:Label>
asp:button id="Button1" runat="server" text="Button">
Y a continuación veamos el CodeBehind asociado al formulario que contiene sólo los procedimientos de Timer1_Tick y Button1_Click:
Partial Class reloj
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'Muestro la hora en la que pulsamos el botón en la etiqueta LHoraInicial
LHoraInicial.Text = System.DateTime.Now.TimeOfDay.ToString().Substring(0, 8)
'Habilito el Timer
Timer1.Enabled = True
End Sub
Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs)
'Cada segundo, la etiqueta LReloj se actualizará con la hora actual menos la hora en la que se pulsó el botón, simulando así un reloj digital inicializado en 0:00:00
LReloj.Text = (System.DateTime.Now.TimeOfDay - CType(LHoraInicial.Text, DateTime).TimeOfDay).ToString.Substring(0, 8)
End Sub
End Class
*Notese que faltan las marcas "<" porque blogspot las interpreta y no las muestra como texto.
AJAX (acrónimo de Asynchronous JavaScript And XML) es una técnica de desarrollo web para crear aplicaciones interactivas que permite la ejecución de Scripts en el cliente, ¡sin necesidad de recargas! Con esto se consigue un aumento de interactividad, velocidad y usabilidad.
Pero vayamos a lo práctico; lo que intentaré mostrar en este post es cómo crear un reloj digital usando AJAX, porque para hablar de AJAX ya tenemos la wikipedia o la página oficial de AJAX (en inglés) donde os podréis bajar las extensiones de AJAX, el kit de herramientas y algunos tutoriales.
Pues bien, lo único que necesitamos es añadir en nuestro formulario un ScriptManager, para que funcionen los Scrips de AJAX, y un UpdatePanel en el que introduciremos un Timer y un Label. Veamos el código del formulario:
asp:ScriptManager id="ScriptManager1" runat="server">/asp:ScriptManager>
asp:UpdatePanel id="UpdatePanel1" runat="server">
ContentTemplate>
<%--Cada 1000 milisegundos (1 segundo) llamamos al evento Timer1_Tick--%>
asp:Timer id="Timer1" runat="server" interval="1000" ontick="Timer1_Tick" enabled="false">
/asp:Timer>
<%--La siguiente etiqueta mostrará el reloj--%>
asp:Label id="LReloj" runat="server">/asp:Label>
/ContentTemplate>
/asp:UpdatePanel>
asp:label id="LHoraInicial" runat="server" text="Label">/asp:Label>
asp:button id="Button1" runat="server" text="Button">
Y a continuación veamos el CodeBehind asociado al formulario que contiene sólo los procedimientos de Timer1_Tick y Button1_Click:
Partial Class reloj
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
'Muestro la hora en la que pulsamos el botón en la etiqueta LHoraInicial
LHoraInicial.Text = System.DateTime.Now.TimeOfDay.ToString().Substring(0, 8)
'Habilito el Timer
Timer1.Enabled = True
End Sub
Protected Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs)
'Cada segundo, la etiqueta LReloj se actualizará con la hora actual menos la hora en la que se pulsó el botón, simulando así un reloj digital inicializado en 0:00:00
LReloj.Text = (System.DateTime.Now.TimeOfDay - CType(LHoraInicial.Text, DateTime).TimeOfDay).ToString.Substring(0, 8)
End Sub
End Class
*Notese que faltan las marcas "<" porque blogspot las interpreta y no las muestra como texto.
Empirical-WebGen
Empirical-WebGen es el título de la herramienta Web desarrollada en mi Proyecto Fin de Carrera y en mi estancia como tecnólogo en el grupo de investigación Alarcos. Ésta se encuentra enmarcada en el ámbito de la experimentación en Ingeniería del Software, y tiene por objeto dar soporte al diseño de encuestas y experimentos, a su posterior realización y al análisis de los resultados obtenidos.
El 26 de Junio fue presentado en la 12th International Conference on Evaluation and Assessment in Software Engineering (EASE 2008) un artículo sobre esta herramienta, y que se encuentra disponible este enlace del BCS.
Las principales características de la herramienta son:
- Diseño de encuestas y experimentos, a partir de la definición de tareas (preguntas de tipo Si/No, Verdadero/Falso, Elección Múltiple, Respuesta Abierta, Matriz y ejercicios que permiten subir el archivo de solución).
- Asignación de puntuaciones a las preguntas y corrección automática, lo que permite incluso la creación de exámenes tipo test con la herramienta.
- Registro de usuarios.
- Soporte a la realización de las encuestas y experimentos por parte de los usuarios registrados.
- Administración de usuarios; gestión de permisos.
- Monitorización de las encuestas y experimentos en tiempo real.
- Generación de informes en Crystal Reports (tiempos, respuestas, aciertos/fallos y puntuaciones).
- Disponibilidad en los idiomas Español e Inglés.
Empirical-WebGen se encuentra disponible en http://webgen.webportalquality.com/
GALERÍA DE IMÁGENES:
El 26 de Junio fue presentado en la 12th International Conference on Evaluation and Assessment in Software Engineering (EASE 2008) un artículo sobre esta herramienta, y que se encuentra disponible este enlace del BCS.
Las principales características de la herramienta son:
- Diseño de encuestas y experimentos, a partir de la definición de tareas (preguntas de tipo Si/No, Verdadero/Falso, Elección Múltiple, Respuesta Abierta, Matriz y ejercicios que permiten subir el archivo de solución).
- Asignación de puntuaciones a las preguntas y corrección automática, lo que permite incluso la creación de exámenes tipo test con la herramienta.
- Registro de usuarios.
- Soporte a la realización de las encuestas y experimentos por parte de los usuarios registrados.
- Administración de usuarios; gestión de permisos.
- Monitorización de las encuestas y experimentos en tiempo real.
- Generación de informes en Crystal Reports (tiempos, respuestas, aciertos/fallos y puntuaciones).
- Disponibilidad en los idiomas Español e Inglés.
Empirical-WebGen se encuentra disponible en http://webgen.webportalquality.com/
GALERÍA DE IMÁGENES:
Etiquetas:
Empirical-WegGen,
experimentacion,
ingenieria del software
martes, 30 de octubre de 2007
Bienvenida
Bienvenidos a mi blog personal.
En este espacio iré publicando algunos aspectos prácticos relacionados con el mundo de la informática en general y de las tecnologías con las que trabajo en particular, como por ejemplo .NET, AJAX, Crystal Reports...
Espero que los contenidos puedan ser de utilidad y lo más importante, fomentar y compartir el conocimiento.
"Invertir en conocimientos produce los mejores intereses". Benjamín Franklin
En este espacio iré publicando algunos aspectos prácticos relacionados con el mundo de la informática en general y de las tecnologías con las que trabajo en particular, como por ejemplo .NET, AJAX, Crystal Reports...
Espero que los contenidos puedan ser de utilidad y lo más importante, fomentar y compartir el conocimiento.
"Invertir en conocimientos produce los mejores intereses". Benjamín Franklin
Suscribirse a:
Comentarios (Atom)

