29 noviembre 2008

No me hagas pensar, algo bueno que leer

El día de ayer al estar revisando un módulo con mi lider de proyecto (M.C. Isaac Parra) salió el tema de usabilidad por unos botones más que yo deseaba agregar, pero entonces el dijo: "No me hagas pensar", con lo cual, volvimos a hablar de un libro con el mismo nombre, del autor Steve Krug.
Lo mejor de este libro es lo sencillo con que explica "maximas" que hay que tomar en cuenta para el aspecto de la usabilidad de sitios web en esta era de la Web 2.0. En mi opinión son consejos de sentido común que muchas veces olvidamos los desarrolladores o diseñadores de interfaces por tratar de mostrar un despliegue tecnológico impresionante, y que no debemos negar que a veces pasa. Lo acabo de conseguir y al terminar de leerlo profundizaré más en su contenido, para así, escribir más sobre este tema.
Es por eso que recomiendo para esta navidad agregar este libro en su lista de regalos, para ustedes o para ese desarrollador que más estimen. O bien, búsquenlo en su biblioteca o centro de información tecnológica.

08 noviembre 2008

Recomendación para actualización de Xubuntu, Kubuntu o Ubuntu a la versión 8.10

Si su deseo es actualizar su distribución de Linux Ubuntu, Xubuntu o Kubuntu sin tener que descargar la ISO y repetir el proceso de instalación, entonces recomiendo usar el "Gestor de actualizaciones". Lo único que hay que hacer es ejecutarlo y dar clic sobre el botón de "Actualizar" que aparecerá junto al mensaje de la disponibilidad de la nueva versión, tal como se ve en la imagen 1.
Imagen 1. Gestor de actualizaciones con mensaje de actualización para versión 8.10
En algunos casos este mensaje no aparecerá, más cuando la versión liberada es muy reciente, pues la configuración que por default viene en el módulo de "Orígenes del Software" obliga a mostrar las versiones con soporte de larga duración, así como se ve en la imagen 2. Para solucionar esa situación solo se deben cambiar la opción para mostrar nuevas versiones de la distribución por la de "Ediciones normales". Ya para terminar, ejecutan nuevamente el gestor de actualizaciones y el mensaje para descargar la nueva actualización aparecerá.
Imagen 2. Origenes de Software/Actualizaciones - Actualización de la distribución
De existir una duda más concreta es recomendable visitar la Wiki de Ubuntu para resolver los problemas que aparezcan. Actualización : 23 de Abril del 2009 Esta solución aplica también si se desea actualizar de 8.10 a 9.04

04 octubre 2008

Borrar registros duplicados de un DataSet.

Si usas .Net para programar, alguna vez habrás usado el objeto DataSet para contener registros que provengan de una base de datos, que por lo general, está en SQL Sever. Si vas a llamar varias veces a una misma tabla y guardar el resultado de cada lectura en un solo dataset es recomendable ir actualizando los registro en este dataset para evitar duplicidad. El primer paso para ir combinando los registros en un dataset es usar el procedimiento Dataset.merge() y una vez terminado el llenado del dataset usar la siguiente función en código VB que recibe un dataset y el nombre del campo clave de la tabla como patrón para eliminar registros duplicados. Al terminar de buscar los registros repetidos regresa un nuevo dataset con registros únicos.
Public Shared Function delDupRows(ByVal dTable As DataSet, ByVal colName As String) As DataSet
Try
Dim hTable As Hashtable = New Hashtable()
Dim duplicateList As ArrayList = New ArrayList

For Each drow As DataRow In dTable.Tables(0).Rows
If (hTable.Contains(drow(colName))) Then
duplicateList.Add(drow)
Else
hTable.Add(drow(colName), String.Empty)
End If
Next drow

For Each drow As DataRow In duplicateList
dTable.Tables(0).Rows.Remove(drow)
Next drow

Return dTable
Catch ex As Exception
Return Nothing
End Try
End Function
End Class

27 septiembre 2008

¿ Microsoft invita a no usar Google Chrome ?

Desde la salida del Chrome a principios del mes de Septiembre del presente año comence a usarle. A pesar de esto, no había tratado de abrir mi cuenta de hotmail, y tremenda fue mi sorpresa cuando apareció esto después de autentificarme en hotmail.
La advertencia me sugiere a cambiar de navegador para tener una mejor experiencia con la aplicación de correo de Microsoft. El mismo mensaje me ha aparecido al navegar con Firefox desde Linux. Otro detalle curioso es como Microsoft sugiere el uso de Opera y Firefox además de su navegador IE. Pero no hay que temer, ya que en la misma advertencia hay un link para continuar con la carga de la bandeja de entrada de correo. Aunque al ver la advertencia algunos cierren Chrome y usan algún otro navegador, aunque no hay duda que los mismo usuarios de Chrome muy poco usan Hotmail como cuenta de correo recurrente.

09 septiembre 2008

Cargar un XML con Jquery

Hace unas semanas estaba buscando un código para poder cargar el contenido de un archivo XML en una página de manera dinámica y de modo que esta información se cargará al abrir la página. Hace tiempo usaba una función que usaba un objetoActiveX para leer el contenido de un XML, el objeto tenía el nombre de "Microsoft.XMLDOM". El resultado fue una función un tanto grande y que aunque solucionaba el problema no me tenía convencido. Entonces comence a buscar alguna solución con Jquery, pues me funcionó muy bien para cargar páginas HTML al usar funciones como ajax, load, y get. Después de un rato de investigar y agregar unas cosas por mi mismo construí este código:
function cargarXML(url,blanco,info)
{
$.ajax({
type: "GET",
url: url + Math.random(),
dataType: "xml",
success: function(xml) {
var colem = new Array(); var nact = 0; 
$(blanco).empty();
$(xml).find('actividad').each(function(){
colem[0] = $(this).find('contenido').text();
colem[1] = $(this).find('responsable').text();
colem[2] = $(this).find('url').text(); 
colem[3] = $(this).find('fecha').text();
colem[4] = $(this).find('img_std').text(); 
colem[5] = $(this).find('sistema').text();
nact = nact + 1;

$("
").html(colem[0] + colem[1] + colem[3] + colem[4] + colem[5] ).appendTo(blanco); if(nact == 5) { return false; } }); //close each( $(info).html("Total de actividades: " + $(xml).find('actividad').length); } }); //close $.ajax({...}) }
La función cargarXML recibe como parametros la url (la ubicación dentro del servidor del xml), blanco (El objeto DOM donde se cargará el texto que se extraiga del XML) e info (el blanco donde se escribirán el número de elementos del XML leidos). Lo siguiente es usar la función AJAX de jquery para cargar de manera asincrona el archivo xml, es importante ver el uso de la función random, pues con ella creo un valor dummy para evitar problemas de cache. En la función ajax se debe especificar que se va a leer un xml y una vez esto podemos tratar al xml como si fuera un objeto y usar la función find para localizar un nodo en especial en primer lugar y después el método each para leer a todos sus hijos. Para entender mejor la función consideremos la siguiente estructura que muestra únicamente los elementos principales.
function cargarXML(url,blanco,info)
{
$.ajax({
type: "GET",
url: url + Math.random(),
dataType: "xml",
success: function(xml) {

/*Aquí se hace la lectura del XML usando la función each()*/

   }); //close $.ajax({...})
}
Es prudente mencionar que esta es la versión 1.0 de mi código para lectura de XML y posteriormente aclararé más cosas del mismo, actualmente lo tengo implementado en un proyecto en el que estoy trabajando.

03 septiembre 2008

Google Chrome, aquí viene el nuevo contendiente.

El día 2 de Septiembre del presente año se hace el lanzamiento oficial del navegador web Google Chrome Beta en 43 idiomas distintos, incluyendo el Español Latino y del Caribe.

Este navegador se ha lanzado enfocándolo para la Web de hoy en día que va más allá de la navegación de páginas, pues actualmente se han y siguen incrementándose las aplicaciones basadas en la Web, así como la aceptación por parte de los usuarios. Otra de las propuestas interesantes del navegador es el motor de Java Script V8 con el que viene equipado, escrito en C++ e implementando ECMAScript como es especificado en el estándar ECMA-262, 3ra. Edición, el cual corre sobre Windows XP y Vista, Mac OS X 10.5 (Leopard), y Sistemas Linux que usan IA-32 o procesadores ARM. Es interesante observar que Chrome se basa principalmente en WebKit de Apple y Firefox de Mozilla, entre otros navegadores, tomando de ellos principios fundamentales que debe poseer un navegador web así como el funcionamiento.

Las características palpables de Chrome son:

  • Unificación de la barra de dirección: Además de ser una tradicional barra para ingresar una URL, es una barra de sugerencias de escritura, barra de búsqueda en la Web y el historial Web.
  • Pestañas independientes: Chrome promete que si un error ocurre dentro de una de sus pestañas esto no se ve reflejado en las otras. Por defecto, cada vez que se abre una nueva pestaña se muestra un cuadro con la representación gráfica de los últimos sitios a los que accediste, los motores de búsqueda que más usas y las últimas pestañas cerradas.
  • Acceso a aplicaciones Web rápidamente: Puedes acceder a una lista de aplicaciones Web previamente creada sin necesidad de abrir el navegador. Lo cual da la sensación de que son aplicaciones de escritorio.
  • Modo incógnito: Esto no es navegar de forma anónima para los servidores que uno visita, sino no guardar el historial de navegación de la sesión activa.
  • Alertas: Al igual que otros navegadores, se incluye advertencias al tratar de ingresar a un sitio que posea características de inseguro.
  • Marcadores dinámicos: Puedes agregar a tus marcadores (Bookmarks) de forma rápida al hacer clic en el icono de forma de estrella a la izquierda de la barra de navegación o barra única que sería el nombre que le va mejor.Importación de configuración de otros navegadores: Puedes importar la configuración y contraseñas guardadas de FF e IE.
  • Descargas más simples: Por defecto no se abre una nueva instancia en el navegador por la descarga, pasa directamente a la parte inferior del navegador y desde ahí la puedes administrar.

La mejor forma de poder valorar a Google Chrome es descargarlo, lo cual es muy cómodo pues solo pesa alrededor de 400Kb, pero eso se debe a que es un instalador y un updater que descarga los archivos más nuevos en el servidor en ese momento. Al tenerlo instalado pude darme de cuenta de las similitudes y diferencias entre otros navegadores, aunque con esto no quiero decir que este lanzamiento me hará decir que es el mejor navegador en la historia, yo lo veo como un nuevo participante en la “Browser’s Wars” que para algunos es un suceso del pasado pero hoy en día, como algunos lo dicen, estamos viviendo la versión 2.0 de este suceso.

29 agosto 2008

AJAX contra sentido común

¿ Desde cuando hemos oído hablar de AJAX ?, en lo personal llevo unos dos años de oír el termino y el mismo tiempo llevo usandolo. Para dejar claro y no gastar líneas definiendo que es AJAX lo dejaré de esta forma: AJAX, es un método para la programación Web donde pueden ejecutarse acciones definidas en JavaScript de forma asincroná apoyandose en el XML y un objeto de nombre XMLhttpRequest. Lo que siempre debemos tener pendiente es que AJAX no es la panacea universal para un sistema cuya plataforma sea la web, asì como con las bebidas alcholicas, debe usarse con responsabilidad y moderación. Por ejemplo si necesitas el uso de varias llamadas asincronas usa un solo objeto XMLhttpRequest, otra buena practica es no tratar de invertar el hilo negro y usa un framework de Javascript como Jquery, ExJS, Prototype, o el que mejor le quede a tu proyecto. Espero que este pequeño consejo le sea de utilidad a alguien, hasta pronto.

19 agosto 2008

Como configurar Pidgin para cuentas de Gtalk

En principio este artículo nace de mi intención de unificar mi mensajería instantánea con un solo cliente, y después de varias pruebas en Linux decidí migrar este cliente a Windows (Pues es el SO que ocupo en mi trabajo). Al cliente que me refiero es el Pidgin, http://pidgin.im, el cual es un poderoso mensajero instantáneo que soporta varios protocolos, el cual antes era llama GAIM.
Primero hay que descargar el cliente desde el sitio oficial, una vez descargado la instalación es muy fácil y rápida, el punto clave será la configuración. En la figura 1, se muestra la pantalla de bienvenida una vez termina la instalación.
Figura 1.- Pantalla de bienvenida de Pidgin
Presionamos entonces el botón de "Add" o "Añadir" si el paquete esta en español. Lo que sigue es agregar las cuentas de los servicios que vamos a usar, como se ve en la figura 2, esto es sumamente importante pues dependiendo del lugar donde estemos será el tipo de configuración a usar, por ejemplo en casa tengo mis cuentas de MSN, Gtalk y SameTime activas al mismo tiempo y no me costo más que unos cuantos clics configurarlas pues no cuento con una seguridad interna muy estricta para las conexiones a mi router, a diferencia de mi trabajo en donde dependo de terceros para conectarme a Internet y por lo cual solo uso el Gtalk y SameTime.
Figura 2.- Ventana para agregar cuentas a Pidgin; Acceder desde Cuentas/Gestionar o presionando Ctrl + A
Vamos entonces a abordar el punto central del artículo: la configuración del Gtalk. Dicha configuración es muy simple:
  1. Una vez configurados los datos de nuestra cuenta, vamos a la pestaña de opciones avanzadas donde podemos dejar la configuración por defecto o modificarlas dependiendo nuestra situación.
  2. En la versión 2.4 y 2.5 hay tres checkbox (Requiere SSL/TLS, Forzar SSL antiguo 5323 y Permitir autentificación en claro sobre canales no cifrados) de las cuales debemos de escoger la de Forzar el SSL antiguo.
  3. Hay una opción de puerto de conexión, esa debe de ser llenada con el 443
  4. Ahora debemos de ingresar un gateway (pasarela) para la transferencia de archivos, por defecto se usa proxy.jabber.org:7777
  5. Finalmente se debe seleccionar la configuración del proxy, en esta opción la más recomenda es la de configuración global.
La configuración al final debe de ser igual a la que se ve en la figura 3.
Fig. 3.- Configuración final de Pidgin para uso de Gtalk.
Lo relevante de todo esto es que podemos usar una de las dos configuraciones posibles del servicio y de esa forma tener por lo menos una alternativa de "burlar" las restricciones que tenga el ambiente en el que nos conectemos.