31 marzo 2009

ASP .NET: Enlazar el ENTER con un botón de submit

Este es un truco útil para controlar el comportamiento del formulario al presionar la tecla ENTER. Imaginemos que tenemos un formulario con 2 cajas de texto y un botón para enviar el formulario (bloque de código 1), si damos ENTER en este formulario automáticamente se ejecutaran las instrucciones contenidas en el único botón del formulario, pero ¿Qué pasa si tenemos dos botones?.
<form id="form1" runat="server">
<asp:textbox id="txt1" runat="server"></asp:textbox>
<asp:textbox id="txt2" runat="server"></asp:textbox>
<asp:imagebutton id="Bacceder"
runat="server" height="22px" imageurl="bAcceder.png" width="57px">
</asp:imagebutton>
</form>
Bloque de código 1: Un formulario con dos cajas de texto y botón de submit

Si tenemos dos, la acción de la tecla ENTER se relacionará a las instrucciones contenidas en el primer botón que se haya creado y si deseamos que en lugar del primer botón se enlace el segundo botón debemos definir la propiedad defaultbutton en el form y asignarle como valor el ID del botón que queremos que se ejecute por defecto.
<form id="form1" runat="server" DefaultButton="Bregresar" >
<asp:textbox id="txt1" runat="server"></asp:textbox>
<asp:textbox id="txt2" runat="server"></asp:textbox>
<asp:imagebutton id="Bacceder"
runat="server" height="22px" imageurl="bAcceder.png" width="57px">
</asp:imagebutton>
<asp:imagebutton id="Bregresar"
runat="server" height="22px" imageurl="bRegresar.png" width="57px">
</asp:imagebutton>
</form>
Bloque de código 2: Mismo formulario con dos botones, de los cuales uno se relaciona a la tecla ENTER

Una vez hecho esto al presionar ENTER el formulario ejecutará automáticamente las instrucciones del botón Bregresar sin importar los botones adicionales que se definan en el formulario. Hasta pronto y espero y les sirva este post.

30 marzo 2009

SongBird: Mira como canta mi pajarito

Para mi que Mozilla le dio al clavo con este reproductor de música. Songbird es un reproductor de música personalizable de código abierto, así es open source, multi-plataforma (Linux, Mac y Windows), con varios servicios integrados por defecto y con una comunidad activa desarrollando add-ons. En la figura 1 se ve la interfaz de la versión 1.1.1, que puede ser descargada desde aquí.
Fig. 1.- Biblioteca de música de songbird
La experiencia que se tiene con la herramienta es muy agradable, pues al igual que todos los reproductores de nueva generación al instalar la aplicación te pregunta que si deseas buscar en el sistema música para crear tu biblioteca musical, lo cual para muchos es esencial. Al momento de reproducir alguna canción por medio de mashTape se comunica con servicios de internet (Last.fm, wikipedia,Flickr,MTV news, Google News, Amazon) para obtener fotos, discrografía, bio del grupo o cantante, próximas presentaciones, etc. Cuenta con una navegador web lo cual hace más sencilla la sindicación de feeds multimedia, los cuales pueden ser descargado o reproducidos desde la red si tu lo deseas; para usarlo solo entras al sitio, por ejemplo al sitio de un podcast y de forma automática en la parte inferior aparecerán todos los feeds multimedia o enlaces de audio del sitio, ver figura 2.
Fig. 2.- Mostrando feeds de un sitio desde songbird.
Y no tengan temor aquellos dueños de iPods pues tiene soporte para el mismo. En fin un reproductor muy completo, confiable, con una comunidad que lo soporta, agradable visualmente, sencillo y en crecimiento. Una opción muy recomendable para aquellos que están acostumbrados a los productos Mozilla y también para aquellos que deseen comenzar.

29 marzo 2009

Twitea.me: Para twitear con SMS desde México

Muchos estoy seguro que usan ya Twitter, y se habrán dado cuenta que no hay un número para mandar SMS a tu cuenta de twitter desde México. Pues gracias al servicio de Twitea.me es posible ya mandar SMS con costo nacional, además del aporte que da dicho servicio, su sitio web en donde te das de alta es de lo más sencillo y agradable, vamos todo un servicio web 2.0. Solo debes de llenar los datos necesarios para poder registrar tu número en su servicio y ellos te dan un teléfono a donde mandar tus SMS y eso es todo. Desde ese momento puedes mandar los mensajes desde tu móvil y de inmediato se actualizan tus updates en tu cuenta, ¿Increíble no?.
Si desean seguirme mi cuenta en twitter es: @sauljetsmi

28 marzo 2009

Ubuntu 9.04 Listo para descarga

Así es, ya hay un release candidate de Ubuntu listo para descargarse con propósitos de prueba. Es muy importante aclarar que no es una versión estable, y por lo tanto no recomendable para instalarse en maquinas en producción, pero aquellos que sean consientes de esto podrán descargarla desde ubuntu.com. ¿Qúe hay de nuevo? Entre las cosas que vienen con "Jaunty Jackalope" son:
  • Gnome 2.26
  • X.org Server 1.6
  • Un nuevo estilo para las notificaciones, que esta muy agradable. Lo pueden ver desde aquí.
  • Mejoras en el sistema de arranque de procesos iniciales del sistema (Una carga más rápida).
  • Kernel 2.6.28
  • Suporte para el sistema de archivos Ext4
  • La versión Ubuntu Server incluye Eucalyptus para hacer cloud computing y así crear tu propia nube privada.
¿Remplazaré a Ubuntu 8.10? No, recomiendo no sustituir tu versión estable hasta que se haga el anuncio oficial al público de la 9.04, por ahora sería bueno montarla en una maquina virtual (Virtual Box por ejemplo) y realizar todas las pruebas necesarias para retroalimentar a los desarrolladores con la opinión del usuario final, es decir, nosotros. ¿Y qué con Xubuntu, Kubuntu, Edubuntu? Si eres usuario de alguna de las anteriores distribuciones también puedes descargar las betas de cada una de ellas en sus respectivas páginas oficiales. Yo particularmente uso Xubuntu, por que me agrada XFCE y la estoy descargando ya. El salto de 8 a versión 9 significa que veremos un gran cambio con respecto a lo que estábamos acostumbrados y si les pareció significante el salto 8.04 a 8.10 esto lo supera.
Fig 1.- Imagen de Ubuntu 9.04 (Notificaciones)

20 marzo 2009

Los navegadores más usados (Top browsers shared trend)

La lucha por proclamarse el mejor navegador (browser) se ha vuelto una lucha mediatica, como sabrán Microsoft, Apple, Mozilla y Google han lanzado ya las betas de sus navegadores acompañadas de informes, artículos o avisos hablando sobre los beneficios que tienen sus nuevos  productos y anunciando el sobre saliente desempeño de sus motores de Javascript. 
Pero, ¿Y que es lo que usa la gente?
La realidad dice que Internet Explorer y Firefox son indiscutiblemente los navegadores que se encuentran en la cima de la preferencia de los usuarios, donde IE al mes de Febrero del 2009 tiene un porcentaje de uso del 67.44% y FF 21.77%; siendo más del doble el número de personas que al día de hoy usan IE la aceptación de su nuevo navegador es casi seguro a pesar del desempeño que tenga. 
¿Y donde están los demás?
Así como la diferencia entre FF y IE es de más del doble, es la misma situación de Safari comparado con FF. Y el cuarto lugar que el año pasado era de Opera ahora lo ocupa Google Chrome quien en menos de 1 año ha logrado superar el 1% de uso a nivel mundial.
Es un triunfo seguro para Microsoft,¿O no?
Las mismas cifras alentadoras de este año no lucen tan bien al voltear hacia atrás, pues IE ya a perdido casi el 10% de usuarios y eso podría empeorar si el nuevo IE8 corre con la misma surte que Windows Vista, como algunos han dicho (Is IE8 the vista of the browsers?).
¿Cuál usar entonces?
Ante todo esto, nosotros tenemos la última palabra de que queremos usar y lo único bueno de esta pelea por ver quien es el mejor es que en mayor o menor medida todos están haciendo mejores para ofrecernos una mejor experiencia en la web, que es lo que realmente queremos, y muchos como yo quizás seguiremos usando varios navegadores por que nuestro trabajo.

19 marzo 2009

Diseño de un sitio web aprovechando los "mínimos"

La distribución de los elementos en un sitio web es un punto fundamental para darle a un producto o servicio la importancia y empuje necesario. A continuación daré una breve explicación de una técnica para la distribución de la información en la página inicial del sitio de una empresa siguiendo las tendencias de los grandes en la balanza mundial.Tomemos por ejemplo apple.com para explicar el uso de los mínimos, como se puede observar en la imagen 1 hay una idea central en el sitio un mensaje muy directo que dice: "Mira esto es lo nuevo en apple, ¿Quieres obtenerlos o saber más?".
Fig. 1.- Mostrando la idea principal
Y la imagen no es solo un cartel bonito, sino una liga hacia más información del producto. Entonces apple usa su área mínima de la pantalla para distribuir dos elementos el menú de navegación que representa de un 10 a 20% y el aproximadamente el 80% para el producto principal. Sin embargo no debemos olvidar que un sitio web no es una "hoja" de un alto definido por la pantalla, todo lo contrario y por eso después de haber definido los elementos principales podemos poner otros servicios o productos nuevos y finalmente el pie de página con ligas semejantes al del menú de navegación o información de contacto; como se observa en la imagen 2.
Fig. 2 .- El resto de la parte inferior se utiliza para mostrar otros servicios o productos y el contacto con la empresa
Apple no es la única empresa que sigue este concepto, pues la competencia también tiene lo suyo vean está imagen de la página principal de Microsoft.

18 marzo 2009

Chrome 2.0 beta liberado

Google Chrome por fin a sido liberado al público y los desarrolladores nos prometen que han aumentado la velocidad del mismo en un 25% con respecto a la versión anterior. En la figura siguiente se muestra la diferencia de capacidades con versiones anteriores de Chrome:
Fig 1 y 2.- En la figura 1 (superior) se mide el desempeño del motor de Javascript de Chrome V8 y en la figura 2 se mide la velocidad de renderizado.
Además de aumentar el rendimiento del navegador se han agregado nuevas capacidades como el auto completado de formularios, zoom de página completa, autoscroll y el arrastre de pestañas para una vista lado a lado, como se ve en el vídeo siguiente:
La mejor forma de entender todo esto es descargando la beta y probándola, yo lo estoy haciendo ya y si siento una ligera mejoría con respecto a la versión anterior. A pesar de que uso Google Chrome estoy un poco extrañado con el lanzamiento de una segunda Beta y aún no una versión oficial para Linux, pero espero que no pase como con Picasa para Mac.
Descargas:
Fuentes:

Hacer un elemento HTML transparente (CSS opacity)

Hacer un elemento HTML transparente es algo muy útil cuando por ejemplo deseas que el usuario vea un area de escritira muy atractiva cuando en realidad va a usar un simple: . La solución viene del lado de CSS, pero como siempre hay problemas entre browsers, y siguiendo las recomendaciones del mozilla developer center presentó lo siguiente:
Digamos que quiero que un DIV sea transparente, entonces se deberá crear la siguiente regla CSS para lograr eso tanto para FireFox como para IE.
div.transp { /* make the div translucent */
opacity: 0.6;
filter: "alpha(opacity=60)"; /* expected to work in IE 8 */
filter: alpha(opacity=60);   /* IE 4-7 */
zoom: 1;                     /* needed in IE up to version 7, or set width or height to trigger "hasLayout" */
}
Así de simple se logra transformar un DIV normal en un DIV semi-transparente para FF y IE.
Referencias:

17 marzo 2009

¿Quién es más rápido en la web?

En Marzo del presente año (2009) Microsoft ha publicado un análisis de rendimiento de su nuevo navegador (bueno ya no tan nuevo) Internet Explorer 8 (IE8 para los amigos), dicho análisis realiza una prueba del rendimiento de su producto comparandolo con Google Chrome 1.0 y Firefox 3.05 y además las condiciones sobre las cuales se llevaron a cabo dichas pruebas para poder repetirlas. A grandes rasgos tomaron el top 25 de los sitios más visitados en el mundo, según comScore y realizaron un análisis del rendimiento de IE8,FF 3.0.5 Y Chrome sobre los sitios. Los resultados de todo esto arrojan que IE8 RC1 (Release candidate 1) es más rápido de FF y que Chrome. Siendo IE 12 de 25 sitios más rápido al renderizar que sus contrincantes. 
A pesar de que ya están cerca los lanzamientos de nuevas versiones tanto de FF y Chrome, estás no fueron consideradas para la prueba, y en mi opinión quizás se deba a que no se consideran como "completas" por parte de Microsoft, a pesar de que FireFox 3.1 Beta 2 se podría llamar un beta con cara de release. Para tener otra referencia de rendimiento, ComputerWorld publicó un artículo sobre Safari 4 Beta el mes pasado donde mostraba una comparativa de velocidad para "renderización" del Javascript entre Safari 4 Beta, Chrome 2, FF 3.1 Beta 2, IE8 RC1 y versiones estables actuales de FF y Chrome, ver figura 1.
Prueba de SunSpider publicada en ComputerWorld en Febrero del 2009 muestran a Chrome y Safari como los más veloces
Después de la publicación del benchmark de microsoft Mike Shaver de Mozilla dijo aplaudir todo esfuerzo por acelerar el desempeño de IE. "El que Microsoft este trabajando en incrementar el rendimiento de IE es algo bueno para la Web", dijo Shaver
Para concluir debemos reflexionar que no es lo más importante quien es más rápido, tiene su peso, pero al final la deferencia la marcará aquella herramienta de navegación capaz de seguir los estándares, personalizable, multi-plataforma, adecuada a nuestros requerimientos y sobre todo útil para las necesidades actuales y futuras de la web.
Fuentes originales: 
Descargar el informe de Microsoft desde aquí.

11 marzo 2009

Jquery: 5 plugins interesantes muy recientes (2009)

De vez en vez no es mala idea darse una vuelta por la librería oficial de plugins de Jquery, ya que puedes ver que hay de nuevo y que cambios se han hecho en los plugins que has llegado a usar para tus proyectos. Hoy decidí dar una vuelta por el sitio y seleccione 5 plugins que me resultaron interesantes:
  • DataTable: Este plugin transforma un elemento table en un grid con funciones muy útiles. Algunas de las funciones son el ordenamiento de la información cargada en la tabla, filtrado, determinar el estilo de la tabla, agregar o quitar filas en tiempo real, paginación, capacidad de implementar otros idiomas a las etiquetas auto-generadas, iluminar las filas seleccionadas, mandar un submit con elementos de la tabla y algunas otras funciones más. Cuenta con buena documentación, pero no es una solución cuando quieres traer un gran volumen de datos ya que su desempeño dependerá de la capacidad de la maquina del cliente y de su navegador.
  • PngFix: Este plugin es una solución ligera y muy practica para resolver los problemas de transparencia con los archivos PNG en el IE5.5 y el IE6x. Aunque existen librerías independientes de Jquery por ahí que solucionan este problema se puede rescatar de este plugin las diversas correcciones del defecto en las distintas formas de implementación de un PNG.
  • Simple StarRating: No sólo es una interfaz desarrollada en javaScript para valorar contenido usando una barra de estrellas, además tiene la capacidad de mandar un callback si la comunicación con el servidor fue correcta o incorrecta. De entre sus características están la adaptación de los iconos, establecer valores mínimos, capacidad de usar el evento click, hover o ambos y especificar la url con la que hay que comunicarse (de forma asincrona claro) para guardar el ranking.
  • Jquery LightBox: Es una ventana de tipo modal con overlay para visualizar imagenes, de fácil implementación y ocupa los atributos title, src y alter como valores para su funcionamiento. Presenta algunos problemas cuando se visualiza en FF o Safari con el botón de cerrar pero a su favor tiene la simpleza y distintas funciones de las cuales se rescata el ver siguiente imagen.
  • Jquery Bookmark: Es un complemento ideal para un blog o CMS, de muy fácil implementación y que cuenta con un repertorio extenso de redes sociales para el envió de tu enlace. Los ejemplos por defecto no son muy atractivos pero el plugin a evolucionado al grado de que puedes personalizar desde el número de redes sociales a mostrar hasta la apariencia del complemento.
Algunos de los plugins listados no son recientes, pero los he agregado por que en los últimos días se han liberado nuevas versiones de los mismos. Espero que le sean de utilidad a alguien esta pequeña lista de recomendaciones de plugins desarrollados en Jquery.

Las pruebas del cliente

Todo proyecto de software tiene una etapa de pruebas y éstas por lo general son ejecutadas por el equipo que desarrolla dicho producto. La mayoría de las pruebas son llevadas a cabo bajo condiciones normales o en ocasiones se realizán las llamadas pruebas de stress. Estas pruebas son elaboradas en un ambiente poco favorable para el software; por ejemplo si es una aplicación web y el módulo a probar es un listado de empleados, se realizan pruebas cargando 100 veces más de lo que se piensa subir al sistema y si es necesario se aumenta esta cifra exponencialmente hasta comenzar a notar anomalías.
Fig. 1 . - Una conexión de red bajo condiciones adecuadas
Después de esta etapa en el "laboratorio" siguen las "pruebas del cliente", las cuales no se apegan a un proceso de "testing" que un equipo de desarrolladores podría imaginar y las condiciones muchas veces escapan de lo imaginable.
Todo lo anterior sale a colación por que hace unos días recibí una solicitud para la mejora de un módulo que es parte de un CMS desarrollado para una empresa que publica clasificados. Dicho módulo poblaba una lista de colonias dependiendo del estado que se seleccionara previamente y las colonias las recuperaba por medio de una llamada asincrona al servidor. El cliente necesitaba que las colonias se cargarán "más rápido" y al revisar la velocidad de dicha carga todo marchaba perfectamente, el problema entonces era averiguar que pasaba del lado del cliente o del lado del servidor donde se encontraba el sistema en productivo. Para encontrar el problema decidí emular localmente el sistema bajo condiciones normales en mi equipo de casa y las cosas marchaban bien. Después de un rato lo subí al servidor de productivo y fue hasta entonces que pude sentir la experiencia que el cliente narraba y al ir analizando el rendimiento de mi conexión a Internet note que tenía un cliente P2P encendido que estaba consumiendo un considerable ancho de banda tanto de subida como de bajada y eso perjudicaba mi comunicación con el sistema en línea. La solución entonces fue contactar con el cliente y preguntarle si había revisado el sistema usando algún cliente P2P o alguna otra aplicación que consumiera un gran ancho de banda, y al hacer esto el cliente revisó nuevamente el sistema dándose cuenta que el problema no era más que el ambiente donde realizó sus pruebas anteriormente.
Fig. 2 . - Una conexión de red usando un cliente P2P.
Por eso es una practica obligada descartar lo más obvio y a veces absurdo antes de llegar al extremo de analizar el código en busca de un "bug" o proponer un nuevo requerimiento que suponemos solucione la necesidad del cliente.

09 marzo 2009

COALESCE, una función de SQL

Anteriormente hable sobre el uso de COALESCE en SQL Server 2005 o posteriores y olvide investigar si era valida para otros manejadores de Base de Datos. Después de investigar un poco puedo declarar que COALESCE es una función nativa del lenguaje SQL, así como CAST, CONVERT o COUNT. Por tal motivo su implementación es igual para la mayoría de los manejadores de BD que obedescan los lineamientos de la refencia del lenguaje SQL.
Dicho esto, es casi seguro que si usamos MySQL, Oracle, MS SQL o algún otro manejador que haga uso del lenguaje SQL podremos hacer uso de esta función tan útil en cuanto manejo de valores NULL.
Enlaces recomendados: