Archive for the ‘Internet’ Category

Toolkit for web developers.

noviembre 17, 2010 16 comentarios

When develop a website or web app, it is not easy make a great experience for each browser or device that uses it.  It is important to have in mind some general topics like response time, availability and consistency

As Gomez define in their Best of the Web Report (2009):

Response time measures the end-to-end time elapsed while downloading each Web page or the entire multistep transaction process. This includes the base HTML page and any referenced objects, third-party content, JavaScript and Cascading Style Sheets and other Web content. The reported metric represents the average time required to download the homepage or execute the multistep transaction without factoring in user latency.

Availability measures the percentage of successfully completed tests out of total test attempts for the period. Availability rates are dependent upon a number of variables including the ability of our testing agent to access the Website, its ability to process a transaction without error, and its ability to download each step of the transaction within a reasonable 60-second time frame. Reported availability rates do not include errors related to the Gomez measurement system or scripting problems.

Consistency measures the standard deviation of the response times of successful tests. The goal is to have a low number (in seconds), which indicates how consistent the response time is each time a user visits a Website. Highly variable response times (in seconds) indicate inconsistent performance that may be caused by poor Website performance as measured across diverse geographies, issues with Internet peering or an under-powered technical architecture which leads to slowdowns during periods of peak traffic.

In this post I show some tools that help us to improve our work as developers, it covers tools for debug, analyze, document, minify, monitor and test the apps.

Browser Tools

The browser tools are plug-ins or tools that are directly embedded in the browsers, the list with the original description as it appears on the website of each tool.


Firebug integrates with Firefox to put a wealth of web development tools at your fingertips while you browse. You can edit, debug, and monitor CSS, HTML, and JavaScript live in any web page.

  • Inspect and edit HTML
  • Tweak CSS to perfection
  • Visualize CSS metrics
  • Monitor network activity
  • Debug and profile JavaScript
  • Quickly find errors
  • Explore the DOM
  • Execute JavaScript on the fly
  • Console logging for JavaScript

Firebug Lite

Compatible with all major browsers: IE6+, Firefox, Opera, Safari and Chrome, You can extend it and add features to make it even more powerful.


YSlow analyzes web pages and suggests ways to improve their performance based on a set of rules for high performance web pages (  YSlow is a Firefox add-on integrated with the Firebug web development tool. YSlow grades web page based on one of three predefined rule set or a user-defined rule set. It offers suggestions for improving the page’s performance, summarizes the page’s components, displays statistics about the page, and provides tools for performance analysis, including™ and JSLint.

Image optimization is an art few have mastered. Useful image editing tools exist that allow images to be edited to reduce their file size while retaining image quality. Using these tools is a good start for optimizing images, but more can be done using advanced tools like uses optimization techniques specific to image format to remove unnecessary bytes from image files. It is a “lossless” tool, which means it optimizes the images without changing their look or visual quality. After runs on a web page it reports how many bytes would be saved by optimizing the page’s images and provides a downloadable zip file with the minimized image files. is included with YSlow and is no longer available as a separate download. Download YSlow now to get and start saving bytes on image files.

Page speed

Page Speed is an open-source project started at Google to help developers optimize their web pages by applying web performance best practices. Page Speed started as an open-source Firefox/Firebug add-on and is now deployed in third-party products such as, Show Slow and Google Webmaster Tools.

Page Speed is a family of tools for optimizing the performance of web pages.

  • The Page Speed Firefox/Firebug add-on allows you to evaluate the performance of your web pages and to get suggestions on how to improve them.
  • The mod_pagespeed Apache module automatically rewrites pages and resources to improve their performance.

Web Inspector

The Web Inspector from safari, gives you quick and easy access to the richest set of development tools ever included in a browser. From viewing the structure of a page to debugging JavaScript to optimizing performance, the Web Inspector presents its tools in a clean window designed to make developing web applications more efficient. To activate it, choose Show Web Inspector from the Develop menu.

  • Choosing Safari Menu Option
  • Choosing Preferences…
  • Choosing the Advanced Tab
  • Enabling “Show Develop menu in menu bar“

Speed tracer

Speed Tracer is a tool to help you identify and fix performance problems in your web applications. It visualizes metrics that are taken from low level instrumentation points inside of the browser and analyzes them as your application runs. Speed Tracer is available as a Chrome extension and works on all platforms where extensions are currently supported (Windows and Linux).

Using Speed Tracer you are able to get a better picture of where time is being spent in your application. This includes problems caused by JavaScript parsing and execution, layout, CSS style recalculation and selector matching, DOM event handling, network resource loading, timer fires, XMLHttpRequest callbacks, painting, and more.

Chromium Benchmarking Extension

The Chromium Benchmarking Extension is a quick-and-dirty way to test page load time performance within Chrome.

  • Can clear the cache between each page load
  • Can clear existing connections between each page load
  • Works with both SPDY and HTTP
  • Measures time-to-first-paint, overall page load time KB read/written, and several other metrics
  • Can compare performance between SPDY (  and HTTP

Internet Explorer Developer Toolbar

The Internet Explorer Developer Toolbar provides several features for exploring and understanding Web pages, is not compatible with Internet Explorer 8. These features enable you to:

  • Explore and modify the document object model (DOM) of a Web page.
  • Locate and select specific elements on a Web page through a variety of techniques.
  • Selectively disable Internet Explorer settings.
  • View HTML object class names, ID’s, and details such as link paths, tab index values, and access keys.
  • Outline tables, table cells, images, or selected tags.
  • Validate HTML, CSS, WAI, and RSS web feed links.
  • Display image dimensions, file sizes, path information, and alternate (ALT) text.
  • Immediately resize the browser window to a new resolution.
  • Selectively clear the browser cache and saved cookies. Choose from all objects or those associated with a given domain.
  • Display a fully featured design ruler to help accurately align and measure objects on your pages.
  • Find the style rules used to set specific style values on an element.
  • View the formatted and syntax colored source of HTML and CSS.

IE Developer Tools

Every installation of Internet Explorer 8 comes with the Developer Tools. This tool enables Web site developers to quickly debug Microsoft JScript, investigate a behavior specific to Internet Explorer, or iterates rapidly to prototype a new design or tries solutions to a problem on-the-fly.

Getting started with the tools is simple: press F12 or click Developer Tools from the Tools menu.

Opera Dragonfly

Opera Dragonfly allows you to develop more quickly and easily by providing tools to debug your JavaScript and to inspect the DOM, CSS, network traffic and data stores. Developing for mobile has never been easier with Opera Dragonfly’s built-in remote debugging. Opera Dragonfly can be activated from the Developer Tools menu or by right-clicking and selecting Inspect Element. Opera Dragonfly’s source is available to view,  it is released on a Apache 2.0 license.

  • Debug JavaScript
  • Inspect the DOM
  • Redefine your style
  • Monitor the Network
  • Dig through your storage
  • Spot your errors
  • Design Utilities
  • The Opera debug menu
  • Debug your phone or TV

Opera Dragonfly allows you to debug web pages from your desktop, that are being displayed on your mobile phone remotely (with opera mobile), to see how go to this article

Standalone tools

These tools go beyond of the browser tools and give you insights more professionals about what is happening in your web apps.

Dynatrace AJAX Edition

dynaTrace AJAX Edition is the most powerful tool for optimizing your Web 2.0 applications. With so much code executing in the browser, it’s getting more and more difficult to keep your apps light and responsive. AJAX Edition v2.0 is a community-driven release that goes beyond debugging and diagnostics.

  • Analyzes your code and tells you were your hotspots are
  • Recommends proven solutions to common Web 2.0 problems
  • Compares your site’s performance to your competitors’
  • Provides deep insight across AJAX, Javascript, rendering, caching, & more
  • Supports Internet Explorer 6, 7, and 8


Show Slow is an open source tool that helps monitor various website performance metrics over time. It captures the results of YSlow, Page Speed and dynaTrace AJAX Edition rankings and graphs them, to help you understand how various changes to your site affect its performance.

HTTP Watch

HttpWatch is an integrated HTTP sniffer for IE and Firefox that provides new insights into how your website loads and performs, has a comprehensive  automation interface that can be used by most programming languages (e.g. C#, Javascript & Ruby). The interface can be used to control the HttpWatch plug-in for IE or Firefox and to access data in HttpWatch log files.

  • HttpWatch captures a wide range of HTTP related data including:
    • Headers and Cookies
    • URLs and method (e.g. GET, POST, etc)
    • Parameters sent in a query strings and POST requests
    • HTTP status codes and errors
    • Redirections
    • The network size of the HTTP response including headers
    • Chunked encoding
  • Integrates With Internet Explorer and Mozilla Firefox
  • Compact & Comprehensive Log Files
  • Includes a Standalone Log File Viewer
  • Summary of Recorded Traffic
    • Performance
    • Page Events
    • Timings
    • Status Codes
    • Errors
    • Warnings
  • Grouping Of Requests By Page
  • Real-Time Page Level Time Charts
  • Request Level Time Charts
  • Page Level Events
    • DOM Load
    • Page Load
    • Render Start
    • HTTP Load
  • Detects Potential Problems


Fiddler is a Web Debugging Proxy which logs all HTTP(S) traffic between your computer and the Internet. Fiddler allows you to inspect all HTTP(S) traffic, set breakpoints, and “fiddle” with incoming or outgoing data. Fiddler includes a powerful event-based scripting subsystem, and can be extended using any .NET language. Fiddler is freeware and can debug traffic from virtually any application, including Internet Explorer, Mozilla Firefox, Opera, and thousands more.

Monitoring iPhone web traffic (with Fiddler)
You can ‘sniff’ the web traffic coming from an iPhone, to see how go to this link:


Mite is a powerful, desktop-based tool for testing and validating mobile Web content. Mite will reduce your time to market and help you deliver a better end-user experience. With a customizable library of over 1,800 devices and 11,000 device profiles, Mite gives you unequalled access to screen compatibility and application support information.

Keynote Mite lives on your desktop giving you instantaneous feedback. Navigate a site and validate that content appears as you’ve intended while checking that links are functioning properly. Mite also provides a download summary, a performance summary, re-directs, headers, cookies and detailed waterfall graph for further investigation.

Charles Debugger

Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).

Charles makes debugging quick, reliable and advanced; saving you time and frustration

  • Records all traffic between your browser and the Internet
  • Reveals the contents of all requests, responses, cookies and headers
  • Supports SSL and HTTPS
  • Saves valuable time
  • Simulates slower internet connections
  • Download statistics
  • Configurable
  • Quickly find and eliminate bugs

With Charles Debugger You can debug iphone web apps, to know how, see:

JSDoc toolkit

JsDoc Toolkit is an application, written in JavaScript, for automatically generating template-formatted, multi-page HTML (or XML, JSON, or any other text-based) documentation from commented JavaScript source code.


YUI Doc is a tool written in Python that generates beautiful, organized, searchable API documentation for your JavaScript code. You will typically use YUI Doc as part of your build process. YUI Doc is comment-driven and is compatible with a variety of coding styles. You do not need to be using YUI Library JavaScript in order to use YUI Doc.

MS Visual Round Trip Analyzer

The Visual Round Trip Analyzer tool helps web developers and testers visualize the download of their page, identify best practices and changes that improve web performance. The network Round-Trip between the client and server(s) is the single biggest impact to web page performance – much greater than server response time. VRTA examines the communications protocol, identifying the causes of excessive round-trips, and recommending solutions. Performance engineers, testers, developers, operations personnel should use VRTA to conduct their web performance analysis.

HTTP Scoop

HTTP Scoop passively listens for HTTP requests from any browser (or other application for that matter) running on your Mac.

There’s no special configuration needed, no cumbersome proxies required. You just hit the Scoop button and off you go.

  • Capture HTTP conversations
  • View headers, parameters & more
  • View & save responses
  • Any browser/client or server
  • No proxy or browser plug-in
  • Great for AJAX and Web Services

Web tools

These are tools that you use directly on the code or an URL to test your web sites /apps.


Boomerang is a piece of javascript that you add to your web pages, where it measures the performance of your website from your end user’s point of view. It has the ability to send this data back to your server for further analysis. With boomerang, you find out exactly how fast your users think your site is. All you have to do is stick it into the bottom of your web pages and call the init() method.

Boomerang is opensource and released under the BSD license.

YUI Profiler

The YUI Profiler is a simple, non-visual code profiler for JavaScript. Unlike most code profilers, this one allows you to specify exactly what parts of your application to profile. You can also programmatically retrieve profiling information as the application is running, allowing you to create performance tests YUI Test or other unit testing frameworks.


Test Mobile Applications on Real Devices.

The Perfecto Mobile Handset Cloud system enables you to access and control real mobile devices via the web. Using the system you can quickly and easily operate the phone keys, touch-screen, or QWERTY keyboard to control the device, install applications on the device and verify that your application or service works properly and displays correctly on the phone’s screen.

The Perfecto Mobile system is a hardware and software solution. The mobile handset is mounted on a cradle that holds it in a specific location. A video camera, located in front of the handset’s screen, captures the real user experience as it is displayed on the handset’s screen.

  • Controlling a remote device
  • Typing Text.
  • Installing an application on the handset
  • Keep a record of your actions and collaborate
  • Screen Shots.
  • Video Clips.
  • On-Line.
  • Testing interruptions.
  • Sending SMS.
  • Web-based UI.

The members of the Opera Developer Network get 7 hours of remote access, free of charge.

Web Page Test

WebPagetest is a tool that was orginially developed by AOL for use internally and was open-sourced in 2008. The online version at is an industry collaboration with various companies providing the testing infrastructure for testing your site from across the globe.


JSLint is a JavaScript program that looks for problems in JavaScript programs. It is a code quality tool.

Minification is the process of eliminating white space, comments, and other nonessential parts of the javascript code to decrease the size of the JS files that need to be transfered from the server to the browser.

YUI Compressor

YUI Compressor is an open source tool that supports the compression of both JavaScript and CSS files. The JavaScript compression removes comments and white-spaces as well as obfuscates local variables using the smallest possible variable name. CSS compression is done using a regular-expression-based CSS minifier.

Google Closure Compiler

The Closure Compiler reduces the size of your JavaScript files and makes them more efficient, helping your application to load faster and reducing your bandwidth needs.

The Closure Compiler provides warnings for illegal JavaScript and warnings for potentially dangerous operations, helping you to produce JavaScript that is less buggy and and easier to maintain.

The Closure Compiler is a tool for making JavaScript download and run faster. It is a true compiler for JavaScript. Instead of compiling from a source language to machine code, it compiles from JavaScript to better JavaScript. It parses your JavaScript, analyzes it, removes dead code and rewrites and minimizes what’s left. It also checks syntax, variable references, and types, and warns about common JavaScript pitfalls.

To help you work with your transformed code, you can also install the Closure Inspector, a tool that makes it easy to use the Firebug JavaScript debugger with the Compiler’s output.

The Closure Compiler has also been integrated with Page Speed, which makes it easier to evaluate the performance gains you can get by using the compiler.


Web performance monitoring and analysis tools can provide a lot of knowledge about how your end-users uses the website or web app from different perspectives, so it is very important to know the tools that we have to measure different parts of the applications.


Descripción de la Plataforma Blackberry para el desarrollo de aplicaciones Web

septiembre 8, 2010 4 comentarios

El navegador de BlackBerry.

BlackBerry es una plataforma basada en estándares, por lo que la mayoría de las tecnologías Web estándares son soportadas en el navegador de BlackBerry, existen limitantes por lo que hay que tomar en cuenta algunas consideraciones especiales cuando se construye un sitio orientado a BB, pero en general, el navegador BB trabaja casi como la mayoría de los navegadores.

Tipos de conexiones o Medios de transporte.

Un dispositivo BlackBerry cuenta con varias rutas de conexión (medios de transporte) para hacer una petición a un servidor web  y obtener datos. Una ruta, es el camino que utiliza una petición que realiza un dispositivo hacia un servidor y de regreso.
El navegador Web de un dispositivo BlackBerry puede acceder a un servidor por medio de una de estas conexiones:

  • Wireless Application Protocol (WAP).- Antes de los Smartphones, los dispositivos móviles contaban con limitaciones como poco poder de procesamiento, capacidades de navegación limitadas y poco ancho de banda, el protocolo de aplicaciones inalámbricas (WAP) es usado por las compañías de teléfonos para proveer servicio de Internet compatible con estas limitaciones. Este protocolo provee un subconjunto de capacidades típicas en los navegadores de escritorio, y necesita de puertas de enlace especiales que tienen los proveedores de servicios inalámbricos. WAP utiliza un reducido lenguaje de marcado llamado WML y un lenguaje script llamado WMLScript.
  • Direct TCP.- La conexión directa TCP toma una ruta desde el dispositivo BlackBerry al servidor por medio de una salida a Internet, que da el proveedor del servicio, la conexión usa un APN (Nombre de punto de acceso) para GPRS configurado en el teléfono móvil por la compañía que presta el servicio de conexión inalámbrica.
  • BlackBerry Internet Service (BIS).- Es un servicio especial para los usuarios de BlackBerry, que se usa para acceder a un sitio Web, el dispositivo va a la red del proveedor del servicio, después a la infraestructura de red de BlackBerry y por ultimo al servidor donde esta hospedado el sitio.
    Cuando se utiliza esta conexión se debe tener cuidado en cuanto a la cantidad de datos que se envían a través de BIS, porque como la conexión es por medio de la infraestructura de BlackBerry, es posible que RIM tenga restricciones en cuando a cuantos datos se puedan enviar.
  • Blackberry Mobile Data System (MDS). – Es un componente del servidor empresarial de BlackBerry (BES, BlackBerry Enterprise Server) y es una conexión extra que permite acceder de manera segura recursos internos de la red corporativa donde este el BES. La ruta que toma el dispositivo va por medio de la red del proveedor del servicio, después a la infraestructura de BlackBerry, después al BES y después al servidor destino.
  • Wi-Fi.- Cuando un punto de acceso Wi-Fi esta al alcance, un dispositivo puede hacer uso de la red Wi-Fi para la transmisión de datos en lugar de la red del proveedor del servicio, esta conexión es la más rápida para el usuario.

Para conocer más acerca de esto:

Medios de transporte en plataforma BB (video):


Configuración de las conexiones del navegador Blackberry.

Tipos de navegadores BlackBerry.

En la pantalla inicial de algunos dispositivos, hay varios iconos de navegador, la diferencia que existe entre los navegadores que ejecutan esos iconos, es la ruta que toma la petición para llegar al servidor, esto, es regularmente confuso para los usuarios porque no saben cual es el que se debe de utilizar. Los iconos disponibles dependiendo del dispositivo y conexión son: Navegador de Internet, navegador Wap y Navegador BlackBerry, qué en realidad, son el mismo navegador, la diferencia entre los iconos es el medio de transporte que utilizan para acceder a un sitio Web.

  • Navegador de Internet: Usa un proveedor de servicios inalámbrico para acceder a los sitios Web usando http. dentro de las opciones de este navegador se puede utilizar uno adicional que es el Navegador Hot spot, que usa la conexión Wi-Fi del dispositivo para conectarse a una red local y tener conexión a Internet, este navegador agrega una interfaz adicional para administrar la autentificación segura a la conexión Wi-Fi.
  • Navegador WAP: Usa un proveedor de servicios WAP inalámbrico para acceder a los sitios usando WAP, este proveedor convierte páginas HTML en WML.
  • Navegador BlackBerry: Usa el servicio de conexión MDS (MDS-CS, Mobile data system connection service) para acceder a los servidores dentro de un cortafuegos corporativo. Esta opción es solo disponible cuando el dispositivo tiene activo el BES.

A partir de la versión 4.2, RIM reduce el numero de iconos en el dispositivo, el navegador BlackBerry y el navegador de Internet, se consolidan en un solo icono llamado Navegador.
En muchos dispositivos, el navegador WAP, es un icono separado, debido a los servicios que presta la compañía móvil, el icono y el nombre asociado con el navegador es definido por el proveedor del servició y el tema actual en el dispositivo, por ejemplo, el icono del navegador wap en la red de telcel se llama “ideas telcel”.

Iconos de navegador
Navegador wap llamado Ideas Telcel en los dispositivos de la red Telcel.

A partir de la versión 4.2, un usuario puede determinar la conexión para hacer las peticiones Web especificando un navegador por defecto para todas las peticiones. Si posteriormente quiere acceder un sitio usando otro medio de transporte (por ejemplo, cambiando de el Navegador de Internet al navegador Wap), debe cambiar el tipo de navegador antes de solicitar la página nueva. Para especificar un navegador por defecto, se debe abrir el navegador, presionar el botón de menú y seleccionar opciones, después seleccionar propiedades generales y ahí especificar el tipo por defecto, en caso de que el usuario no quiera tener un navegador por defecto, y solo desea usar un tipo de navegador para un sitio, entonces puede especificarlo en la opción configuración del navegador, visitar el sitio y guardarlo en favoritos, de esta manera, se guarda la dirección y el tipo de navegador para ese sitio solamente.

Para las aplicaciones Web empresariales que necesiten de un navegador en específico, una opción para asegurarse que utilice la conexión apropiada es construir un incono Web para la aplicación. Un icono Web es una aplicación Java sencilla que lanza un navegador específico para acceder a una URL específica. Muchas compañías usan este método para poner un icono de acceso rápido a su portal en la pantalla de inicio de los dispositivos.

Capacidades del Navegador BlackBerry.

En cuanto a capacidades del navegador, BlackBerry adopta muchos de los estándares del mercado, pero implementa en algunos casos solamente un subconjunto de características porque algunas no aplican al dispositivo móvil ó debido a las limitaciones en cuanto al poder del procesador y capacidad de memoria ó debido a el impacto potencial al rendimiento y/o a la vida de la batería (RIM pone especial atención al rendimiento y vida de la batería de los dispositivos).
En muchos casos RIM implementa solo una parte del estándar para un dispositivo específico y en las subsecuentes versiones van agregando más características hasta implementar completamente el estándar.

Lenguajes de marcado.

El navegador soporta los siguientes lenguajes de marcado.

  • HTML versión 4.01
  • Compact HTML (cHTML).
  • XHTML Mobile Profile (XHTML-MP) (subconjunto de XHTML 1.1).
  • WML.

Las versiones y opciones dependen de versión del software del dispositivo BlackBerry.

Si el objetivo de la aplicación Web es que corra en teléfonos móviles y en smartphones, entonces se debe usar HTML para construirla, con esto, el desarrollador solo codifica una sola vez y corre en plataformas de escritorio y móviles usando solo un lenguaje de marcado.

Framesets HTML

En las versiones de software anteriores a la 4.2, solo se puede ver un frame ala vez, cuando un usuario visita el sitio el navegador despliega un mensaje que la página contiene frames, y pregunta cual se desea ver.
En la versión 4.2 se pueden ver todos al mismo tiempo, pero no de la manera en la cual el diseño fue planeado, los frames se despliegan uno después de otro en el orden de izquierda a derecha y de arriba hacia abajo.
En la versión 4.6 funciona correctamente como un navegador de escritorio, interpreta los frames en la disposición que fue creada por el desarrollador.

Tablas HTML

Las tablas son soportadas en el navegador desde la versión 3.8, algo que se debe de tomar en cuenta al desarrollar aplicaciones con tablas para dispositivos con versiones de software anteriores de la 4.6, es que en estas versiones se permite al usuario (de echo en algunas viene por defecto) deshabilitar las tablas en las opciones del navegador.

Hojas de estilo en cascada (CSS)

Los dispositivos BlackBerry soportan el estándar de la W3C y el estándar del protocolo WAP respecto a las CSS, al igual que sucede con las tablas, en algunas versiones anteriores a la 4.6 puede ser deshabilitado el soporte de las CSS.


Para versiones antiguas a la versión 4.6 se soporta Javascript 1.3 y parcialmente Javascript 1.4 y 1.5 dependiendo el modelo. Con la versión 4.6 se soporta completamente Javascript 1.5.
Antes de la versión 4.6 el acceso al DOM por Javascript es solo de lectura, se pueden leer los objetos del DOM pero no puede hacer ningún cambio aparte que no es soportado el objeto XMLHttpRequest.
A partir de la Versión 4.6, RIM implemento el acceso de lectura y escritura al DOM, lo que significa que se puede usar JavaScript para manipular el contenido de la página en tiempo real, como sucede con las tablas y las CSS, aunque el navegador soporte javascript, el usuario puede deshabilitar el soporte de javascript por medio de las opciones del navegador.

Una buena práctica es solo usar javascript cuando realmente agregue un valor a la aplicación, hay que tomar en cuenta que es mejor mandar tan pocos datos a través de la red como sea posible, claro que en redes de alta velocidad de tercera generación (3G) y con procesadores mas rápidos en los dispositivos más nuevos, no se pone mucha atención a los efectos de descarga e interpretación de una página, pero, un sitio ligero siempre cargara mas rápido que uno pesado sin importar la velocidad de la red.

Java Applets, Controles Active X y Adobe Flash.

Estas tres tecnologías no son soportadas por los navegadores BlackBerry, pero en el caso particular de Adobe Flash, RIM ofrece una alternativa que es el “Plazmic Content Development Kit” que permite a los desarrolladores crear experiencias mas ricas en el navegador por medio de “Plazmic composer” que convierte SVG a archivos PME y PMB que son SVG en representación binaria, lo mas interesante es que incluye una herramienta de Flash-Plazmic que convierte contenido Flash compatible a Dispositivos BlackBerry.

Para más información acerca de Plazmic composer visitar

Audio y video.

El navegador de BlackBerry puede reproducir audio y video, los formatos que son soportados depende de la versión del software del dispositivo BlackBerry y el proveedor de Internet o BES que se este utilizando. El proveedor de Internet o BES procesa los archivos y los convierte u optimiza para tocarlos en el dispositivo. En general los dispositivos pueden tocar los formatos más populares, pero es mejor revisar antes de elegir un formato en particular para la aplicación.

Para una lista completa del soporte de audio y video visitar este link:

KB05482 :

Para conocer mas acerca de las tecnologías que se puede utilizar con el navegador de BB visitar

Se selecciona la versión del software del dispositivo y después clic en la guía que se desea consultar.

Identificación del Navegador.

Se puede configurar la Identificación de navegador (o Emulación de navegador en dispositivos antiguos) por medio de las opciones de configuración del navegador.
No se debe pensar que al cambiar la identificación del navegador se va a emular a dicho navegador, esto es incorrecto, lo que realmente se hace es cambiar la manera que el navegador se identifica a sí mismo en un servidor Web, los valores posibles para esta opción son: BlackBerry, Firefox e Internet Explorer.

Cuando cualquier navegador hace una petición a un servidor Web, se envían (junto con la petición) una serie de valores por medio de las cabeceras de petición, el servidor las puede usar para determinar cosas acerca del cliente que realiza la petición, existe una cabecera llamada USER-AGENT que identifica el agente de la aplicación (el navegador) que hace la petición.

Por defecto el navegador BlackBerry envía este valor:

BlackBerry[Numero de Modelo]/[Versión del Software del dispositivo BlackBerry]/Profile/[Perfil MIDP] Configuration/[Versión CLDC ] VendorID/[Identificador del provedor]

Numero de modelo: El numero del modelo (sólo numerico, no nombres de producto como “Bold” o “Storm”) del dispositivo.
Version del SW BlackBerry del dispositivo: La versión del software que tiene el dispositivo.
Perfil MIDP:
La versipin de MIDP (Información del perfil del dispositivo movil), la especificación MIDP fué publicada por SUN para el uso de java en dispositivos moviles y pda’s, la versión de MIDP indica que característicvas soporta el dispositivo.
Identificador del provedor: Este valor sirve para indicar la diferencia entre un dispositivo manufacturado por RIM (cuyo valor generalmente es 1) y otro fabricande bajo el programa Built In de Blackberry.

Por ejemplo el dispositivo Blackberry Bold se identifica de esta manera en una red de:

BlackBerry9700/ Profile/MIDP-2.1 Configuration/CLDC-1.1 VendorID/121

Al cambiar el agente de usuario se identifica así:
Mozilla/5.0 (Windows; U; Windows NT 5.1; rv: Gecko/2009032609 Firefox/3.0.8
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727)

Estas cadenas se dividen en tres partes:
1. La bandera de compatibilidad que es usada por los browsers modernos para indicar que es compatible con un conjunto de características comunes.
2. La version del agente de usuario  (MSIE 7.0 que identifica Microsoft Internet Explorer).
3. La plataforma que identifica el sistema operativo y la versión en este caso Windows NT 5.1 indica windows XP

Algo que podría parecer raro es que Internet explorer se identifique como Mozilla, esto es por razones históricas, Netscape usaba Mozilla como su identificador y en los años 90 otros navegadores empezaron a “mentir” sobre su identificador y agregaron en su agente de usuario Mozilla para poder pasar sobre sitios en donde solo podian verse en Netscape (con Mozilla)

Muchos sitios Web usan el valor de la cabecera USER-AGENT para determinar qué contenido debe ser entregado al navegador, un sitio optimizado para un navegador móvil no se verá bien si se apaga el mecanismo para que el servidor Web pueda determinar si el agente es un dispositivo móvil, ya que cuando se detecta que es un dispositivo móvil se sabe de antemano que el dispositivo es limitado por el tamaño de pantalla, reducido en capacidades y ancho de banda. Cuando es correctamente detectado, se reducen las imágenes, se organiza el contenido de manera vertical en lugar de horizontal y se simplifica el sitio lo más posible, cuando se cambia la identificación del navegador se hace corto circuito ya que el servidor sirve el contenido para un navegador de escritorio y no se va a ver bien.

Existe una manera de saber si el agente de usuario es BlackBerry en caso de que la identificación del navegador se haya cambiado por el usuario, hay otra cabecera HTTP que se llama PROFILE el cual tiene un valor que es una URL que apunta al archivo del marco de descripción de recurso (RDF Resource Description Framework) que esta hospedado en el sitio de En general, es suficiente analizar la URL para determinar el modelo y la versión del dispositivo. Si se requiere de información más detallada, la aplicación puede consultar el archivo RDF para conocer la información de configuración del dispositivo, el archivo RDF es un documento XML que describe las capacidades de software y hardware de un dispositivo móvil. RIM proporciona una liga a este archivo en las cabeceras HTTP para hacer más fácil a una aplicación Web determinar un conjunto completo de capacidades del dispositivo que hace la petición a la página. de BlackBerry]/[Version de Software]

Por ejemplo el dispositivo Blackberry Bold manda el siguiente valor para Profile:

La alianza abierta de móviles (OMA Open Mobile Alliance) ha definido estándares para el perfil de usuario de agente (UAPROF).

Si una aplicación busca el valor de la cabecera USER-AGENT y dice que es un agente corriendo Firefox o Internet Explorer, puede buscar en la cabecera PROFILE para determinar si es realmente un BlackBerry haciéndose pasar por otro navegador.

Optimización y mejores prácticas.

Para cualquier aplicación Web orientada a móviles, un desarrollador debe optimizar todo lo que se pueda dependiendo del dispositivo y el tipo de usuario que va a utilizar la aplicación, las aplicaciones diseñadas para dispositivos BlackBerry deben tener un balance entre la mejor experiencia de usuario posible y una larga duración de la batería, cuando se diseña para un dispositivo BlackBerry, se debe considerar las diferencias entre dispositivos móviles y las computadoras, los dispositivos móviles tienen las siguientes características:

  • Una pantalla más pequeña que puede desplegar un limitado numero de caracteres.
  • Menor velocidad del procesador.
  • Conexiones de red wireless con un periodo mayor de latencia (el intervalo de tiempo entre cuando una estación de red busca acceso para un canal de transmisión y cuando el acceso es autorizado o recibido, equivalente a tiempo de espera) que las LAN tradicionales.
  • Menos memoria disponible.
  • Menor periodo de vida de la batería.

La interfaz de usuario para un BlackBerry debe de ser diseñada para que los usuarios puedan desarrollar tareas fácilmente y acceder a la información de manera más rápida, antes de diseñar una aplicación, se puede analizar otras aplicaciones para aprender más acerca del modelo de navegación y las mejores prácticas para el diseño de interfaces de usuario.

Es importante poner atención en el diseño del contenido para que el usuario pueda obtener la información que está buscando de manera rápida, se debe tener el contenido breve y directo al grano, para el usuario móvil menos es más. Es preferible diseñar el contenido de manera que el usuario no tenga que usar el scroll y de alguna manera mantener la navegación, búsqueda y otros componentes auxiliares siempre a la vista.

Para dispositivos móviles la recomendación es construir las páginas en un diseño vertical en lugar de horizontal, el usuario tiene que desplazar hacia abajo para ver el contenido en la pantalla limitada que tienen estos dispositivos, una buena práctica, es no tener mas de 2 columnas para la pagina, adicionalmente una página demasiado larga puede ser incomodo para los usuarios, las páginas largas deben de separarse en múltiples páginas , se puede usar un campo de selección (<select>) para permitir al usuario escoger una porción de la página que desee ver.

En cuanto a las imágenes, es preferible usarlas lo menos que sea posible en las páginas, se deben usar solamente cuando se necesite mostrar información ó destacar información que pueda ser solo mostrada por medio de una imagen, ya que toman tiempo extra por el servidor para optimizar y transferir aparte que ocupan espacio adicional que es fundamental para pantallas pequeñas.

Las conexiones MDS y BIS automáticamente optimizan imágenes antes de mandarlas al navegador, las imágenes son convertidas a un limitado conjunto de formatos de imagen, y cambian el tamaño para ajustarlas a la resolución de la pantalla de los navegadores y optimizadas para transmitirlas lo mas rápido posible. Aún con estas optimizaciones toma tiempo el interpretado de las páginas.
Se debe evitar imágenes que contengan texto ya que cuando se usa una conexión MDS el servidor toma como parámetro el atributo width de la etiqueta img ignorando el alto de la imagen y escala la imagen a un ancho especifico manteniendo la misma relación de aspecto, por lo que el texto se arruga y puede convertirse en ilegible.

Respecto a las tablas, las tablas en los navegadores BB pueden ser problemáticas, en dispositivos anteriores a la versión 4.5 son deshabilitadas por defecto en el navegador, otro problema es que no se interpretan correctamente, cuando se usa una tabla amplia en una pantalla pequeña, el navegador ajusta el contenido cuando llega al lado derecho de la pantalla, por lo que en una configuración por columna, cada celda de renglón en lugar de acomodarse horizontal se acomoda vertical por lo que se pierde el contexto y no se puede apreciar cuales celdas son de cada columna, para solucionar esto se puede usar una técnica que utiliza la regla horizontal (<HR/>) como separador para minimizar el uso de tablas. Para versiones anteriores a la 4.6 no hay problema con las tablas estas se interpretan correctamente en el navegador.

En cuanto a las hojas de estilo, para versiones anteriores a la 4.5 incluyéndola, las CSS están deshabilitadas por defecto en las posteriores no hay problema. Aunque hay que tener cuidado en su uso por agrega trafico de red y consume vida de batería, y toma tiempo adicional para cargarse e interpretarse en el navegador, hay que tener cuidado que la hoja de estilos se usen completamente y no tener hojas de estilo asociadas a navegadores de escritorio.

En cuanto a javascript, el soporte viene desde la versión 3.8, pero de nuevo hay que tener cuidado, porque puede estar deshabilitado. Para conocer si javascript esta habilitado en el dispositivo se puede buscar en la cabecera HTTP_ACCEPT la cadena “application/x-javascript” en su contenido, si la cadena existe, entonces javascript está disponible en el navegador.
A partir de la versión 4.2.1, en las opciones de configuración del navegador existe una que permite al navegador preguntar cuando desee habilitar javascript. Y funciona cuando la aplicación va a ejecutar alguna función, por ejemplo:

<script type="text/javascript">
document.write ("JavaScript está disponible");
JavaScript está deshabilitado
<a href="javascript:void()">habilitarlo</a>

Cuando el usuario no tiene habilitado javascript al hacer clic en la liga aparecerá una caja de dialogo preguntando al usuario si quiere habilitar el uso de javascript, si el usuario acepta entonces la pagina se recarga con la opción habilitada (solo esa sesión). AJAX es soportado a partir de la versión 4.6

Para conocer mas acerca de las tecnologías que se puede utilizar con el navegador de BB visitar

Se selecciona la versión del software del dispositivo y después clic en la guía que se desea consultar.

Detección del navegador de BB

La detección del navegador debe hacerse del lado del servidor nunca en el dispositivo una razón es que cuando se hace la detección del lado del cliente se realiza por medio de javascript, si el usuario tiene deshabilitado el js entonces no podrá detectarse, otra razón es que cuando se hace del lado del dispositivo, mucho contenido extra es enviado al navegador pero nunca usado, por lo que ese código nunca debió de haber sido transmitido al dispositivo.

Probar y Depurar Aplicaciones Web.

Después de codificar una aplicación Web, se debe de probar en cada uno de los navegadores que van a acceder a la aplicación. Una de las formas mas fáciles de probar y depurar una aplicación móvil es viéndola directamente de los dispositivos, usando este método los desarrolladores pueden validar fácilmente el diseño y formato de la aplicación directamente de los dispositivos, también es fácil de determinar si el rendimiento de la aplicación es adecuado para los usuarios, se conoce si las páginas cargan rápido y cuales páginas tardan toman un tiempo para bajarse e interpretarse además de que se puede entender cual es la experiencia de usuario. El problema de este enfoque es que se debe tener acceso a cada dispositivo que se tiene pensado van a utilizar los usuarios del sitio y cada dispositivo debe tener un plan de datos así el navegador va a poder acceder al sitio.

Otra forma de probar la aplicación es por medio de compañías que proveen acceso a dispositivos reales para pruebas en caso de que no se tenga acceso a algún dispositivo en específico en donde se necesite probar la aplicación algunos ejemplos de estas compañías son:

En estos sitios se pueden seleccionar cientos de dispositivos móviles que tienen disponibles en línea, con estos sitios no se tiene que tener el dispositivo físico para probar porque se accede a el por medio de una interfaz Web.

Simuladores BlackBerry

Otra manera de probar aplicaciones es por medio de simuladores BlackBerry, que son una representación casi exacta de los dispositivos. Los simuladores BlackBerry son gratis para descargar desde el sitio de desarrolladores de RIM y se pueden conseguir de todos los modelos, además que de pueden instalar diferentes versiones del software de los dispositivos con los que se pueden probar un solo dispositivo con diferentes versiones de SW. Los simuladores se descargan de la sección de herramientas del sitio de BB:

Una ventaja de los simuladores de BB es que no necesitan un plan de datos ya que usan la conexión de la computadora en donde están instalados para acceder a las aplicaciones, pero esto también es una limitación, porque el simulador no puede realizar conexiones directas a los recursos de la red; BlackBerry también ofrece un simulador MDS independiente para instalar junto con el simulador del dispositivo (The BB Mobile Data System). Cuando se utilizan los simuladores en conjunto con el simulador MDS se debe tomar en cuenta que:

  • El simulador MDS debe de correr en la misma computadora donde se corre el simulador del dispositivo.
  • El simulador MDS debe arrancar antes que el simulador del dispositivo.
  • Solo un simulador de dispositivo se puede correr en una PC a la vez, los simuladores usan el mismo puerto para comunicarse con el simulador MDS por lo que se recibe un error cuando un segundo simulador se corre.
  • El servidor Web de la aplicación debe de ser accesible por la red por el sistema que corre el simulador MDS.

Después de considerar estos pasos solo se debe de:

  • Correr el simulador MDS
  • Correr el simulador del dispositivo en el que se quiere probar
  • Abrir el navegador en el simulador del dispositivo
  • Escribir la URL donde se encuentra la aplicación
  • Probar, hacer los cambios que correspondan y volver a probar

RIM también ofrece herramientas para poder probar aplicaciones por medio de ambientes de desarrollo, Hay un plugin para Microsoft Visual Studio y un plugin para Eclipse. Estas herramientas, permiten construir aplicaciones Web, probarlas y depurarlas, rápidamente con un simulador integrado del dispositivo BlackBerry. Con estas herramientas es posible:

  • Correr el simulador del dispositivo y el simulador MDS directamente del ambiente de desarrollo.
  • Poner, quitar y deshabilitar puntos de interrupción en el código javascript que se ejecute en el navegador de BlackBerry.
  • Agregar visores de variables para conocer su valor mientras corre la aplicación.
  • Ver las peticiones y respuestas del objeto XMLHttpRequest y ver la información de las cabeceras.

Se pueden descargar los plugin de las siguientes ligas.

BlackBerry 6.

El navegador de la nueva plataforma soporta webkit y html5 por lo que es más fácil desarrollar mejores experiencias de usuario, el nuevo navegador soporta geolocalización, almacenamiento y workers además de css3 y otras características.
Para conocer más información sobre esto visitar:

Tips de accesos directos en el navegador muy útiles a la hora de probar aplicaciones web.

  • Para cambiar el tipo de vista (por columna o por página) presionar la tecla Z.
  • Para hacer acercamiento, presionar la tecla I.
  • Para alejar, presionar la tecla O.
  • Para ir a una página específica, presionar la tecla G.
  • Para ir a la página de inicio, presionar la tecla H.
  • Para cambiar el soporte de Javascript, presionar la tecla J.
  • Para mostrar la lista de favoritos, presionar la tecla K.
  • Para agregar un favorito, presionar la tecla A.
  • Para ver el historial, presionar la tecla Y.
  • Para refrescar la página, presionar la tecla R.
  • Para ver o enviar un link posicionarse en el link y presionar la tecla L.
  • Para ver la dirección de la página Web, presionar la tecla P.
  • Para esconder y mostrar el banner superior, presionar la tecla U.
  • Para abrir las opciones del navegador, presionar la tecla S.
  • Para mover hacia el principio una pantalla, presionar la tecla Shift y la tecla espacio.
  • Para mover hacia abajo una pantalla, presionar la tecla espacio.
  • Para moverse hasta el principio de una página, presionar la tecla T.
  • Para moverse hasta el final de una página, presionar la tecla B.
  • Y por último el mejor , para ver el código fuente de una página presionar alt y después en secuencia rbvs (rim blacberry view source).

Recursos adicionales:

Principios de diseño para dispositivos Blackberry

Documento para diseñar interfaces de usuario.

Sitio para desarrolladores

Mejores prácticas para aplicaciones Web móviles

Mejores prácticas para Web móviles 1.0

WURFL (Wireless Universal Resource FiLe) y Tera-WURFL para detección de capacidades de dispositivos móviles

WURFL (Wireless Universal Resource FiLe) y Tera-WURFL para detección de capacidades de dispositivos móviles

agosto 25, 2010 4 comentarios

Debido a que existe una gran cantidad de navegadores para dispositivos móviles es complicado para los desarrolladores construir aplicaciones que trabajen adecuadamente en la mayoría de los dispositivos, de entrada necesitamos conocer las características que cada dispositivo soporta y las diferencias entre dispositivos; además de que se debe evitar modificar las aplicaciones cuando un nuevo modelo salga al mercado.

Los navegadores y dispositivos son diferentes, pero comparten muchas características en común entre ellos, muchas veces son del mismo fabricante, y son por lo general una evolución del mismo hardware/software, por lo tanto las diferencias entre modelos de un mismo fabricante son mínimas además que los dispositivos de diferentes fabricantes comparten también características y pueden correr la misma aplicación, es por esto que es mejor servir el contenido de nuestras aplicaciones basado en las características que soporta el dispositivo, en lugar de servir el contenido de acuerdo al modelo del dispositivo.

WURFL y Tera-WURFL son depósitos globales de dispositivos móviles y las capacidades que soportan, están orientados para ayudar a los desarrolladores en la construcción de mejores aplicaciones y mejores servicios para los usuarios, mientras que WURFL es un archivo de configuración XML, Tera-WURFL es una base de datos MySQL (SQLServer en su versión beta) que usa WURFL como su fuente de datos, ambas son herramientas muy útiles para detección de dispositivos, sus capacidades y características de manera programática, algunos ejemplos de uso podrían ser:

  • Redirección a versiones móviles de los sitios.
  • Detectar el tipo de video que el dispositivo móvil del usuario soporta.
  • Detectar usuarios iPhone, iPad, iPod y redirigirlos a sitios específicos para estos dispositivos.
  • Detectar la resolución de la pantalla del dispositivo del usuario para servir las imágenes adecuadas para esa resolución.
  • Detectar soporte de javascript, java o flash lite.
  • Detectar si es un dispositivo touch.

WURFL está basado en el concepto de familias de dispositivos. Todos los dispositivos son descendientes de un dispositivo genérico, pero pueden también descender de familias más especializadas, este mecanismo llamado ‘fall_back’, permite a los desarrolladores derivar las capacidades de un teléfono buscando las capacidades de su familia, a menos que una cierta característica sea específicamente diferente para ese teléfono.

Por ejemplo Nokia tiene varias versiones del modelo 7110, algunas de estas no soportan tablas WML,  otras si, WURFL extrae este conocimiento gracias al mecanismo fall_back:

La familia genérica especifica una capacidad llamada “table_support”

<device fall_back=”root” id=”generic” user_agent=””>
<group id=”ui”>
<capability name=”table_support” value=”true” />

Esto se lee como “Dispositivos WAP Genericos soportan tablas WML”

De manera inicial, los telefonos Nokia soportan tablas porque heredan de generic (fall_back=”generic”):

<device user_agent=”Nokia” fall_back=”generic” id=”nokia_generic”>
<group id=”ui”>
<capability name=”Capacidades que acepta este grupo” value=”false” />

Tomando en cuenta el soporte de tablas, el codigo anterior implica que para un dispositivo Nokia generico (nokia_generic) debe ser usado el mismo valor que tiene en generico.

<device user_agent=”Nokia7110/1.0 (04″ fall_back=”nokia_generic” id=”nokia_7110_ver1″>
<group id=”ui”>
<capability name=”table_support” value=”false” />
<device user_agent=”Nokia7110/1.0 (04.67)” fall_back=”nokia_7110_ver1″ id=”nokia_7110_ver1_sub467″ />
<device user_agent=”Nokia7110/1.0 (04.69)” fall_back=”nokia_7110_ver1″ id=”nokia_7110_ver1_sub469″ />
<device user_agent=”Nokia7110/1.0 (04.94)” fall_back=”nokia_7110_ver1″ id=”nokia_7110_ver1_sub494″ />
<!– 7110 new-age –>
<device user_agent=”Nokia7110/1.0 (05″ fall_back=”nokia_7110_ver1″ id=”nokia_7110_ver2″> <group id=”ui”>
<capability name=”table_support” value=”true” />
<device user_agent=”Nokia7110/1.0 (05.00)” fall_back=”nokia_7110_ver2″ id=”nokia_7110_ver1_sub500″ />
<device user_agent=”Nokia7110/1.0 (05.01)” fall_back=”nokia_7110_ver2″ id=”nokia_7110_ver1_sub501″ />

Tomando en cuenta de nuevo el soporte de tablas, el código anterior se lee como “hay una familia de teléfonos de 7110 para la cual las tablas no son soportadas y hay una familia para la cual si son soportadas”, Todos los modelos 7110 están en la lista anterior, pero cada uno hereda de una u otra subfamilia, con esto se puede conocer si un dispositivo soporta tablas o no.

WURFL trabaja por medio de API’s (java y php) y genera un cache para hacer mas rápido las consultas (el archivo XML pesa más de 15MB), por lo que cuando se instala y se ejecuta por primera vez tarda tiempo dependiendo del servidor pero ya las siguientes veces corre considerablemente mas rapido el cache puede ser por medio del sistema de archivos, Memcache, APC, EAccelerator y RDBMS y se especifica el método por medio del archivo de configuración de WURFL (WURFL-config.xml)

Para mas información de como descargar e instalar el api de php hay que visitar esta liga:
Para descargar el archivo XML visitar esta liga:

Una vez instalada la api (php), solo se necesita una manera eficiente para leer la información y usarla en las aplicaciones móviles para personalizarlas dinámicamente de acuerdo a las capacidades que soporte los dispositivos y estar al pendiente de actualizar el archivo XML para soportar los nuevos dispositivos que vayan entrando al mercado, el código básico php para utilizarla es:

$WURFLconfig = ‘/ruta_donde_esta_el_archivo/de_configuracion/WURFL-config.xml’;
$WURFLmanager = WURFL_WURFLManagerProvider::getWURFLManager($WURFLconfig);
$device = $WURFLmanager->getDeviceForHttpRequest($_SERVER);

En el código anterior la primer línea especifica la ruta en donde se encuentra el archivo de configuración, en la segunda se instancia el manejador WURFL que es la interfaz que se usa para hacer las operaciones como crear instancia del dispositivo por medio de una petición HTTP o una cadena de agente de usuario, y en la tercera se instancia la variable $device que regresa un arreglo que contiene una gran cantidad de información acerca del dispositivo por ejemplo:

Array (
[resolution_width] => 770
[resolution_height] => 300
[rows] => 30
[columns] => 77
[max_image_width] => 600
[max_image_height] => 600]
[wbmp] => false
[bmp] => true
[epoc_bmp] => false
[gif] => true
[gif_animated] => true
[jpg] => true
[png] => true
[tiff] => false
[flash_lite] => false

Para ver completo los valores del arreglo visitar

Por otro lado Tera-WURFL es una librería basada en PHP y MySQL que usa usa los datos del archivo XML WURFL y los pone en la base de datos MYSQL para identificar las capacidades de dispositivos móviles, la librería encapsula las consultas a la base de datos y provee una interfaz simple orientada a objetos de los datos además provee una interfaz para obtener la ultima versión del archivo XML de WURFL de sourceforge e importarla a la base de datos.

Una de las principales ventajas sobre WURFL es el rendimiento, normalmente entre 5 y 10 veces mas rápido, como la generación del objeto implica varias consultas, Tera-WURFL guarda el resultado como una cadena serializada en en una tabla dedicada, lo que significa que las siguientes peticiones del mismo agente de usuario es reducida a una sola consulta de esa tabla a la llave primaria (que es el agente de usuario), esto combinado con el cache mismo de MySQL, hace que sea mucho más rápido al ahorrarse muchas las consultas.

El código básico php para utilizarla es:

require_once ‘/ruta_donde_esta_el_archivo/tera_WURFL/tera_WURFL.php’;
$device = new Tera_WURFL();

En la primer línea se especifica donde está el archivo tera_WURFL.php que es necesario, en la segunda se instancia la clase para poder usar tera-WURFL y en la tercera se obtiene las capacidades del agente de usuario (en caso de no encontrar ese agente de usuario busca en la cabecera HTTP-ACCEPT), en un arreglo que contiene la información acerca del dispositivo, la diferencia con el API de WURFL radica en que el arreglo de Tera-WURFL es multidimensional mientras que el de WURFL API es unidimensional, la librería requiere que pasemos $_SERVER[‘HTTP_USER_AGENT’] como parámetro para el método getDeviceForHttpRequest(), esto es la cabecera de HTTP de agente de usuario basada en la cual las consultas de Tera-WURFL usarán como parámetro en la base de datos para obtener los detalles del dispositivo a diferencia de la API de WURFL que pasa $_SERVER la cual contiene todas las cabeceras de petición del protocolo HTTP.

Para ver un ejemplo del arreglo completo visitar:

Un ejemplo para detectar si el visitante es un usuario móvil y redirigirlo sería:

require_once ‘/ruta_donde_esta_el_archivo/tera_WURFL/tera_WURFL.php’;
$wurflObj = new Tera_WURFL();
if ($wurflObj->getDeviceCapability(“is_wireless_device”)) //detectar si es un usuario movil

Para descargar tera-WURFL:

Un problema de usar la cabecera de agente de usuario como parámetro (HTTP_USER_AGENT) es que algunos operadores cambian el agente de usuario y lo reemplazan con alguna cadena genérica, por ejemplo un usuario de Blackberry puede cambiar en las configuraciones del navegador la identificación de navegador con el que quiere navegar (BlackBerry, Firefox, Internet Explorer) por lo que si lo cambia de su modo normal (Blackberry) no se van a servir las paginas adecuadamente, otro ejemplo es Opera mini que envía su propia cabecera user-agent la cual no especifica los detalles del dispositivo en el cual está corriendo y genera otra cabecera (HTTP_X_OPERAMINI_PHONE_UA) en donde especifica el agente de usuario original, para ver un poco mas sobre esto visitar este link


Pagina principal de WURFL:

Grupo de Facebook de WURFL

Grupo de Yahoo de WURFL

Página principal de tera-WURFL:

Introducción a tera-WURFL:


Otras ligas relacionadas:

Artículo sobre Detección de navegadores:

Open Mobile Alliance

Opera Mini request headers

Tips a tomar en cuenta para diseñar aplicaciones móviles:

Ligas para desarrollo orientado a iPhone


Para usar tera-WURFL sin necesidad de instalarlo:

Interfaces de Usuario.

Las interfaces de usuario son muy importantes porque es el medio por el cual se comunican el usuario y la aplicación o dispositivo Jef Raskin comenta “Respecto a lo que concierne al cliente, la interface es el producto”, El usuario ve e interactúa con la interfaz de usuario.

Pero, ¿Que propiedades o características debe de tener una interfaz de usuario?, según [the smashing book] toda interfaz de usuario debe de tener 8 características:

1. Ser Clara. La interfaz evita la ambigüedad haciendo todo claro a través de lenguaje, flujo, jerarquía y metáforas para elementos visuales, las interfaces claras no necesitan manuales y además ayudan a los usuarios a que tengan menos errores mientras las usan.

2. Ser Concisa. Es fácil hacer una interfaz clara etiquetando todo, pero se corre el peligro de poner muchos elementos en la pantalla al mismo tiempo, si hay muchas cosas en la pantalla, es difícil encontrar lo que se busca y la interfaz se vuelve tediosa de usar, el reto real en hacer una gran interfaz es hacerla clara y concisa al mismo tiempo.

3. Ser Familiar. Aunque alguien use una interfaz por primera vez, ciertos elementos pueden ser familiares, se pueden usar metáforas de la vida real para comunicar un significado, por ejemplo, los tabs son comúnmente usados para navegación en los sitios web y en las aplicaciones. Las personas los reconocen como elementos de navegación porque la metáfora del folder es familiar a ellos.

4. Tener buen grado de reacción. Esto significa dos cosas: primero velocidad de respuesta, una buena interfaz no se debe de sentir lenta o pausada, segundo la interfaz debe proporcionar buen nivel de retroalimentación al usuario respecto a lo que está pasando y si el input del usuario ha sido procesado exitosamente.

5. Ser Consistente. Mantener la interfaz consistente a través de las aplicaciones es importante porque permite a los usuarios reconocer patrones. Una vez que los usuarios aprenden como trabajan algunas partes de la interfaz, ellos pueden usar este conocimiento en nuevas áreas porque ellos ya conocen el funcionamiento.

6. Ser Estética. No se necesita hacer una interfaz atractiva para que realice su trabajo, pero haciendo algo que se vea bien, hará que el tiempo que los usuarios gastan usando la aplicación sea más placentero, es bueno tener usuarios felices.

7. Ser Eficiente. Tiempo es dinero y una gran interfaz debe hacer al usuario más productivo por medio de atajos y buen diseño, después de todo este es uno de los principales beneficios de la tecnología, permitir desarrollar tareas con menos tiempo y esfuerzo haciendo gran parte del trabajo por el usuario.

8. Ser Tolerante a fallas. Todos cometemos errores, y él como la interfaz los maneja será un test para la calidad. ¿Es fácil deshacer acciones?, ¿es fácil recuperar archivos borrados? una buena interfaz no debe castigar a los usuarios por sus errores, debe proveer formas para remediarlos.

Diseñar una interfaz que incorpore todas estas características es complicado ya que trabajar en una característica a veces afecta a otra, entre más elementos se agreguen a la interfaz, mas cosas los usuarios tendrán que procesar,  por otro lado no proveer suficiente ayuda y soporte puede hacer que ciertas funciones sean ambiguas, crear algo que sea simple, elegante y al mismo tiempo claro y consistente es la principal  meta para el diseñador de interfaz de usuario.

Existen muchos recursos en línea a continuación listo herramientas, videos y plantillas que pueden ayudar a realizar los prototipos de las interfaces.


the smashing book

WWW Pasado, Presente y Futuro. (Breve Historia del World Wide Web)

octubre 9, 2008 Deja un comentario

En este post, incluyo la charla de la conferencia que impartí en el Simposium Internacional de Informática y Computación 2008 (SIINCO 2008) del Instituto Tecnológico de Chihuahua II.



En La era de la información en que vivimos poco a poco nos hemos ido adaptando al utilizar nuevas tecnologías para mantenernos informados acerca de las circunstancias en que vivimos

En su nivel más básico, todas las actividades que realizamos en esta era de la información son posibles gracias a la generación, procesamiento, transmisión, y obtención de información,  todo esto se hace sobre 5 pilares esenciales según Michael Dertouzos:

1. Toda la información son números.
2. Esos números son unos y ceros.
3. Las computadoras transforman la información ejecutando operaciones aritméticas sobre estos números.
4. Los sistemas de comunicación  transportan la información, moviendo estos números.
5. Las computadoras y los sistemas de comunicación se combinan para formar redes de computadoras, las bases de las infraestructuras de la información.

Conocer esto, es equivalente a saber que las llantas, la gasolina, el motor y el chasis son necesarios para hacer un carro, pero para realmente saber cómo trabaja un carro y cómo podemos hacer uso de él, necesitamos conocer como el motor convierte la gasolina en el poder que rueden las llantas que hace que el chasis se mueva y nos lleve a donde nosotros queramos.

En esta plática conoceremos los pilares del World Wide Web, sus componentes básicos y las tecnologías que se están desarrollando actualmente.



El concepto de hipertexto ha sido usado para reagrupar una serie de documentos semejantes sobre la base de semejanzas o diferencias de múltiples maneras

Estudiosos han investigado por milenios la forma para buscar e identificar piezas de información relacionada, con o sin referencias explicitas.
Se han inventado esquemas de referencia como libro/capitulo/numero de verso, también se ha inventado los pies de pagina, índices, tablas de contenido, todos estos inventos han servido como medios  para vincular lugares en un espacio de información.

Hipertexto es la habilidad para expresar relaciones entre lugares en un universo de información, un lugar debe ser una pieza de información o por lo menos cualquier cosa que exista en una forma estable o recuperable.

Vannevar Bush

Un importante científico en la industria militar de los EU en los tiempos de la 2 guerra mundial y la guerra fría, fue un participante importante en la organización del proyecto Manhattan, este proyecto consistió en la elaboración de las bombas atómicas de Nagasaki e Hiroshima.

A VB  se le acredita la noción moderna de hipertexto, en 1945 escribió un artículo llamado As we may think en donde conceptualizó el memex, una maquina fotoelectromecánica  para guardar, consultar y ligar información usando microfilmes y computación análoga. VB,

Doug Engelbart

El primer programa de hipertexto fue NLS (oNLine System) que Doug Engelbart desarrolló en el instituto de Stanford en 1960, la visión de Doug Engelbart era  que las personas utilizáramos el hipertexto como una herramienta de trabajo en grupo, para ayudarse a mover el cursos de la computadora a través de la pantalla y seleccionar las ligas de hipertexto con facilidad invento un bloque de madera con censores y una pelota por dentro el cual hoy en día conocemos como mouse, el fue un gran inventor del siglo pasado algunos de sus inventos fueron el procesador de textos, la primer videoconferencia.
 Sus esfuerzos se centraban en que las personas se  pudieran comunicar con las computadoras de una manera muy natural.

Ted Nelson

Ted Nelson tenia la visión de una sociedad utópica en la cual toda la información del mundo pudiera ser publicada en hipertexto  para que pudiera ser compartida y que toda la gente se comunicara como iguales, a él se le atribuye el termino hipertexto, ha escrito numerosos artículos, también se le atribuye la creación de la disciplina HCI (Interacción Humano-Computadora) y desarrollo Xanadu.  En Xanadu  confluyen las teorías de Vannevar Bush y Douglas Engelbart. Su objetivo es la potenciación del intelecto humano, ser simple y poder ser usado por cualquier ser humano, y además que permita convertirse en programas de gran complejidad.

Por supuesto un gran invento en la conquista por la conectividad global fue el internet, una infraestructura general de comunicaciones  que liga a las computadoras y sobre la cual el web corre, el internet es un conjunto de protocolos estandarizados que dictan como se envían los datos de una PC a otra, estos datos son transmitidos a través de transportadores como líneas de teléfono, cable, canales de satélite.




Tim Berners Lee.

Nació en Londres Inglaterra, graduado del Queens College de la universidad de Oxford, Tim Berners-Lee comenzó con una idea: crear algo para hacer más fácil la vida, y mejorar la manera de compartir ideas entre las personas.  En pocos años esa idea se convirtió en algo indispensable para la mayoría de la gente, que no puede vivir sin ella.  El surgimiento del Web comenzó en 1980 en el CERN, el laboratorio europeo de Física en partículas ubicado en suiza.
En el CERN trabajaban alrededor de 3000 científicos de diferentes nacionalidades, los científicos llegaban al CERN de varias universidades, utilizaban los equipos del CERN y se regresaban a sus laboratorios para analizar los resultados y sacar conclusiones, la primera asignación de Berners Lee en el CERN fue el desarrollo de un sistema para almacenar la información acerca de que computadoras utilizaban cuales científicos y en qué proyectos estaban trabajando, a este sistema lo llamó enquire por una enciclopedia que él veía de niño, y se le conoce como el primer prototipo del web, este sistema no usaba árboles ni estructuras para guardar la información utilizaba ligas de hipertexto.
Las ligas eran de dos tipos internas y externas, la diferencia era que las internas se ligaban a una página (nodo)  dentro de un archivo y las ligas externas se ligaban a otros archivos, otra diferencia era que las ligas internas aparecían en los 2 nodos mientras que las ligas externas solo tenían una dirección.

A Tim Berners Lee, le gustaba la idea de que una pieza de información es realmente definida solo por lo que está relacionado a ella y la manera en cómo está relacionada. Por ejemplo como las neuronas en nuestros cerebros, las neuronas son solo celdas, el cerebro no tiene conocimiento hasta que se forman las conexiones entre nuestras neuronas, todo lo que conocemos y lo que somos viene de la manera en como las neuronas están conectadas.

Posteriormente Berners-Lee termino  su estancia en el CERN pero volvió 4 años después.
En 1989 el CERN era el nodo más grande de internet en Europa y Berners Lee tuvo la visión de unir el Internet con el hipertexto, formuló una propuesta pero no fue muy aceptada, en septiembre de 1990 Berners Lee y su Jefe fueron  a Versalles a una conferencia de tecnologías de hipertexto para conocer los productos que ya estaban en el mercado y se intereso por dos, uno de una compañía llamada OWL LTD un producto que se parecía mucho a lo que TBL había pensado de un navegador Web,  era un programa que abría y desplegaba documentos cuando se le daba clic en una liga de hipertexto, pero la gente de OWL  no se interesó mucho. También le gustó otro de Dynatext Electronic Books ellos tampoco se interesaron en la propuesta de TBL, ellos insistían en una base de datos centralizada de links para asegurarse que no hubiera ligas rotas, aparte querían mandar aplicaciones compiladas en su caso libros completos, cuestión que chocaba con la visión de TBL de un mundo vivo de hipertexto en el cual todas las páginas estuvieran cambiando constantemente, debido a las decepciones decidió crear el Web por sí solo, en octubre de 1990 comenzó a escribir el código para el web.

Lo primero que escribió fue el cliente web, después el protocolo http junto con el URL.



Son cadenas que se utilizan en lugar de instrucciones y contiene todos los detalles esenciales para la obtención de recursos de una manera compacta. En estas cadenas las diagonales son usadas para delimitar sus partes, la primer parte es el esquema o protocolo de comunicación para buscar un documento, la parte siguiente identifica el servidor en donde el documento existe y la siguiente la ubicación del recurso en el servidor.


Es el protocolo para la transferencia de hipertexto y de otro tipo de documentos en el Internet, consiste de un intercambio de mensajes de petición y de respuesta, Los mensajes de petición de un cliente empiezan  con un código de operación (conocido como método) y el URI del objeto. Los mensajes de respuesta de un servidor comienzan con un código de estatus e información acerca del recurso.


Es una manera sencilla de representar hipertexto, algo importante acerca de HTML es que debe llevar solo la estructura de un documento hipertexto ,  no los detalles de su presentación, esta es la única manera de desplegar razonablemente en cualquier variedad de pantallas diferentes.
HTML está basado en el estándar generalizado de lenguaje de marcado (SGML)  un estándar para publicación de documentos por la comunidad de hipertexto.

HTML está definido como un lenguaje de comunicación el cual corre a través de la red pero no hay un requerimiento de que los archivos sean almacenados en formato HTML. Como los lenguajes dinámicos con otro tipo de formato pero al final convierten su salida a código HTML.


El principio principal detrás de la independencia de dispositivos y accesibilidad, es la separación entre la forma  en cómo está estructurado un documento y el contenido  del mismo, donde el significado de un documento es guardado por separado de la manera en que debe desplegarse.
La independencia de dispositivos y la accesibilidad son mas fáciles de mantener por medio de las hojas de estilo en cascada o CSS, que son un conjunto de instrucciones de cómo se presenta o transforma la información de una página.


El primer navegador que existió se llamó otherwise de los estudiantes de la universidad de Helsinki en Finlandia en abril de 1992, después le siguió violaWWW, de la universidad de Berkeley este navegador, podía mostrar HTML con gráficos, animaciones y bajar pequeñas aplicaciones llamadas posteriormente Applets,  después surgió Netscape Navigator y en su versión 2.0 apareció por primera vez javascript, javascript está basado en el estándar ECMAScript.
Una característica muy importante de javascript es su herencia de prototipos, javascript tiene un sistema de objetos libre de clases, en donde los objetos heredan propiedades directamente de otros objetos, esto es realmente poderoso aunque diferente a la programación por clases. Una desventaja muy importante es su dependencia de  variables globales.


El DOM es un conjunto de estándares para la interfaz de los navegadores.  Define la estructura lógica de los documentos y la manera en que un documento puede ser leído y manipulado. Con el DOM los programadores puede construir documentos, navegar su estructura y agregar, modificar o borrar elementos y contenido. Cualquier elemento (nodo) que esté en un documentos HTML o XML puede ser accesado, cambiado o agregado usando el DOM.
Fue creado como estándar de la W3C para evitar las incompatibilidades de los diferentes navegadores.
Un documento DOM es una colección de nodos, o piezas de información organizada de manera jerárquica. Esta organización permite al desarrollador navegar alrededor del árbol (como esta basado en una estructura jerárquica de información se dice que el DOM es basado en árbol) buscando por información especifica. El DOM es una manera de describir esos nodos, sus métodos y propiedades así como las relaciones que hay entre ellos.



XML permite servir, recibir, y procesar SGML genérico  en el Web, de la manera que no es posible con HTML, fue diseñado de una manera en que es sencilla su implementación y para la interoperabilidad entre SGML y HTML.


Que es

Cuando comenzó la explosión del WWW, Berners Lee se dio cuenta de que se necesitaba de un órgano regulador con el propósito de llevar a el web a su mayor potencial, principalmente desarrollando protocolos comunes para mejorar la interoperabilidad y la evolución del web.

A semejanza del IETF (Internet Enginering Task Force), el W3C desarrollaría especificaciones técnicas abiertas, y a semejanza de un consorcio industrial el W3C representaría el poder y la autoridad de millones de desarrolladores, investigadores, instituciones y usuarios para publicar los más recientes avances en tecnología de información.

Un avance significativo en el desarrollo de internet fue en 1994 cuando Netscape desarrolló SSL un protocolo para proteger las compras con tarjeta de crédito y transacciones electrónicas, y surgió el primer programa que permitió el e-commerce que empezó a ganar credibilidad. Las etapas para crear un estándar son:

1. Proyecto de trabajo
2.Ultima llamada del proyecto de trabajo.
3. Candidato a recomendación.
4. Recomendación propuesta.
5.  Recomendación W3C (Estándar Web)

La w3c define mecanismos no políticas.

Quienes pertenecen

La membresía del W3C está abierta a cualquier compañía, DEC, Netscape, HP, IBM, fueron los primeros miembros.
En los inicios del consorcio las cuotas eran de 50 mil dólares para la membresía completa y de 5mil dólares por membresía de afiliado, los beneficios eran los mismos la diferencia es que para la membresía de afiliado tenían que ser una organización sin fines de lucro, gubernamentales o tener ganancias menores a los 50 millones de dólares, los miembros tienen el derecho a asistir gratis a cualquier junta y sentarse a cualquier grupo de trabajo y tener acceso exclusivo a información acerca de todas las actividades del consorcio. Hoy en día las tarifas también consideran la ubicación geográfica del organismo, por ejemplo para México una membresia de  octubre del 2008 a octubre de 2009 es de 68,500 dólares para compañías con ganancias mayores a los 50 millones de dólares anuales,  7,900 dólares para compañías con ganancias entre 30 y 50 millones de dólares, y para todas las demás 3,810 dólares.


Todo usuario que accede a un Portal de Internet, esta motivado por una razón específica: buscar, aprender, ejecutar una transacción, monitorear, crear, conversar o simplemente entretenerse.

Las implicaciones para el diseño de un portal son simples de entender, pero no siempre son fáciles de implementar, reacciones, preferencias, contexto social, creencias, son aspectos generales de los usuarios que se deben de tomar en cuenta para lograr un buen resultado.
Dentro del diseño se deben considerar los indicadores, que son características que ayudan a los usuarios a saber donde están, a donde ir y como llegar de donde esta, o que otras opciones existen dentro del portal, los indicadores mas comunes incluyen páginas y títulos de ventanas, logos, tabs, o indicadores de selección.

Existen varios temas relacionados con la Usabilidad, patrones de diseño, métodos y procedimientos que requieren de su consideración cuando se desarrolla un Portal de Internet, para asegurar el mayor resultado posible, los desarrolladores deben considerar un rango amplio de temas acerca de interfaces de usuario, y trabajar para crear un Sitio Web que permita el mayor desempeño humano posible.
Las interfaces son muy importantes porque son el medio por el cual los humanos nos comunicamos con las computadoras

HCI,  es la disciplina que estudia el diseño, implementación, uso y evaluación de los sistemas interactivos, para que los humanos tengamos mejor interacción con las computadoras.
Si ellos no pueden usarlo, no lo usarán.

Que es
Uno de los principios del web es que las personas puedan enviar o acceder información entre ellas sin importar el sistema operativo, los formatos que las computadoras usen, o las discapacidades de las personas, lo único que tienen que hacer es seguir el mismo esquema simple de direccionamiento de URI, la idea de la universalidad es la llave, no necesariamente se tiene que usar HTTP o HTML pero son herramientas que ayudan a los problemas de incompatibilidad.
Accesibilidad Web significa que gente con discapacidades puedan usar el Web, más específicamente, accesibilidad web significa que la gente con algún tipo de discapacidad, puedan percibir, entender, navegar e interactuar con el web y puedan contribuir al web.

Porque es importante
La interoperabilidad entre dispositivos ha sido una molestia durante mucho tiempo, Como el web se ha convertido en una importante fuente de recursos en diversos aspectos (educación empleo, gobierno, comercio, salud, y más)  Es esencial que el  web sea accesible en orden de proveer  un acceso y oportunidad  equitativo a las personas con discapacidades.

La mayoría de las responsabilidades de la  accesibilidad se centran en los desarrolladores Web.
Hacer un sitio web  accesible puede ser simple o complejo dependiendo de muchos factores tales como el tipo de contenido, el tamaño y la complejidad del sitio, y el desarrollo de herramientas.
Muchas de las características de accesibilidad son fácilmente implementadas si estas son planeadas desde el principio del desarrollo o el rediseño del sitio web, arreglar sitios web inaccesibles  requiere de mucho esfuerzo.


Rich Internet Applications.
Del 2001 al 2005 el WWW tuvo un gran crecimiento en términos de tecnologías y metodologías para usarse y cambiar de medios estáticos a contenidos más interactivos.
A medida que los navegadores implementaban innovaciones de tecnología, los desarrolladores web comenzaron a experimentar con nuevas formas de interacción para los usuarios, se acabaron las cargas de páginas completas y se sustituyeron por pequeñas actualizaciones de bloques de información, las primeras compañías que experimentaron con esta nueva forma de desarrollos web, fueron Google,  y Yahoo.

Web Services.
Los web services proveen una manera para intercambiar datos entre aplicaciones y servidores. Para facilitar esta comunicación, los web services usan Internet para mandar mensajes compuestos de datos XML entre un cliente (la aplicación que usa los datos) y un proveedor (el servidor que contiene los datos). SOAP (siglas de Simple Object Access Protocol) es un protocolo estándar que define cómo dos objetos en diferentes procesos pueden comunicarse por medio de intercambio de datos XML. SOAP fue creado por Microsoft, IBM y otros y está actualmente bajo el auspicio de la W3C. Es uno de los protocolos utilizados en los servicios Web.

 En febrero del 2005 Jesse James Garret  de la compañía Adaptive Path, publicó un artículo denominado Un nuevo acercamiento de las aplicaciones Web. En este ensayo explicó como el pensaba como las aplicaciones Web y las aplicaciones de escritorio estaban  acercándose cada vez mas.
AJAX permite comunicarse con el servidor por medio de peticiones más ligeras y especificas, con AJAX no hay necesidad de cargar una página entera solo para actualizar los valores de una determinada sección ya que el cliente es libre de comunicarse con el servidor y obtener información sobre demanda, la ventaja de esto es que los clientes experimentan una mejora de navegación en los sitios o aplicaciones ya que al no tener que cargar todo el contenido nuevamente, las respuestas hacia los usuarios son más rápidas, la desventaja es que debido al incremento de peticiones hacia el servidor se aumenta el desempeño del servidor de aplicación, obviamente este aumento depende del funcionamiento de la aplicación.

Flex es un producto de Adobe, para el desarrollo de RIA’s  esta basado en tecnología  Flash, y es una plataforma para las empresas que desean implementar aplicaciones mas interactivas en sus sitios web. Se usa en todo tipo de industria ya que  es muy potente y tiene muy buen manejo de todas las tecnologías web.

Docenas de navegadores web han sido desarrollados por personas  desde hace muchos años, el primer navegador ampliamente utilizado fue NCSA Mosaic que se convirtió en Netscape Navigator, y fue el más utilizado hasta que Microsoft  Internet Explorer tomó el liderato en 1999 debido a la ventaja de distribución. En el 2002 fue liberada una versión de código abierto de Netscape  llamado Mozilla con la idea de que IE era mayor que Netscape pero no mayor que toda la comunidad Web, Mozilla ha ganado mercado particularmente con los usuarios de plataformas que no son Windows, gran parte debido a su fundación abierta, y en 2004 fue liberado FireFox. Amaya es el navegador oficial de el W3C.


¿Qué es?
La Web semántica o Web 2.0 es la idea inicial del Web, un ambiente colaborativo en donde se puede publicar información.  La Web Semántica tiene que ver con calidad de la información, privacidad y confianza


¿Qué es?
Si las ideas de la gente, las interacciones y los patrones de trabajo pudieran ser rastreados usando el web entonces un análisis computarizado nos puede ayudar a ver patrones en nuestro desempeño y de esta manera facilitar nuestro trabajo en grupo.
Las máquinas son capaces de analizar todos los datos del Web, el contenido, ligas y transacciones entre las personas y las computadoras.


El web es más una creación social que técnica Berners Lee lo diseñó para un efecto social, para ayudar a la gente a trabajar junta. La esencia de trabajar juntos en una manera de Red, es que nosotros funcionamos en grupos y el Web nos sirve como herramienta para este propósito.


Redes Sociales.
Las redes sociales son la base del Web 2.0 la llave de las redes sociales son la integridad que engloba la privacidad y la confidencialidad. La privacidad envuelve la habilidad de cada persona para dictar que se puede y que no se puede hacer con su propia información personal


Para realmente trabajar en el Web, necesitamos de mucho mejores herramientas, mejores formatos para presentar información al usuario, interfaces mas intuitivas  e integración con otros sistemas, poco a poco se están adoptando los sistemas de computación en un mundo de hipertexto global.


Usabilidad en diseño web

abril 12, 2007 1 comentario

Todo usuario que accede a un Portal de Internet, esta motivado por una razón específica: buscar, aprender, ejecutar una transacción, monitorear, crear, conversar o simplemente entretenerse.

Al comenzar con el diseño de un portal de Internet podemos imaginar de inicio lo que el usuario realmente trata de ejecutar cuando ingresa al portal y en lugar de pensar en características deseadas y soluciones, pensar en términos de necesidades y problemas.

Las implicaciones para el diseño de un portal son simples de entender, pero no siempre son fáciles de implementar, reacciones, preferencias, contexto social, creencias, son aspectos generales de los usuarios que se deben de tomar en cuenta para lograr un buen resultado.

También es importante definir los objetivos del Portal, los pasos específicos que se necesitan para lograr esos objetivos y el lenguaje que se va a utilizar para describir esos pasos.

Al hablar de Portales Gubernamentales abarcamos un gran numero de usuarios con diferentes características por lo que se debe ser cuidadoso y permitir al visitante explorar el portal sin que se pierda o se meta en problemas, permitiéndole ejecutar lo que quiere de manera instantánea, ahorrándole tiempo con etiquetas de opciones cortas, y bien definidas.

Los Portales Gubernamentales deben de hospedar numerosos sitios internos que pertenecen por ejemplo a las dependencias u organismos descentralizados por lo que es importante mantener la misma disposición de elementos, colores, estilos y al mismo tiempo dar al diseño suficiente flexibilidad para manejar diferentes formas de contenido, señalamientos de “usted esta aquí” y dispositivos de navegación.

Separar el contenido del Portal de su presentación física es una buena practica de diseño, se debe pensar en términos de cómo organizar los elementos y acciones del Portal de la manera mas adecuada a la temática que se esta mostrando. Esta técnica obliga a pensar acerca de las cosas importantes en primer lugar: organización y flujos de acciones, después ya se piensa en cómo presentar la información en páginas, popup y elementos internos de páginas.

Al pensar en términos de cómo estructurar el contenido y organizarlo de acuerdo a su funcionalidad se logra guiar al usuario a través del sitio para obtener lo que necesita, los portales se pueden organizar de acuerdo a objetos, acciones o tareas, categorías o temas, herramientas, o bien combinar los diferentes tipos de organización.

Dentro del diseño se deben considerar los indicadores, que son características que ayudan a los usuarios a saber donde están, a donde ir y como llegar de donde esta, o que otras opciones existen dentro del portal, los indicadores mas comunes incluyen páginas y títulos de ventanas, logos, tabs, o indicadores de selección. Una buena señalización y etiquetas claras (no ambiguas) anticipan lo que se está buscando y especifican como ir, las señales están en donde se supone que deben estar y nunca se debe dejar sin guías un punto en donde el usuario deba decidir.

El ir de una página a otra supone un costo de ancho de banda por eso es importante mantener el numero de esos brincos lo mas bajo posible. La eficiencia real viene de la estructura del Portal una de las peores cosas que encontramos en algunos portales es que obligan al usuario a navegar en múltiples niveles de sub-paginas cada vez que necesita realizar una tarea simple.

La manera en que se colocan los elementos en una página es muy importante, obviamente el contenido más importante debe estar más visible que el menos importante, el usuario debe ser capaz de deducir la estructura de información de la página por la disposición de los elementos, existen algunos mecanismos para presentar la jerarquía visual en una página; preferencia de esquina superior izquierda, espacio en blanco, fuentes contrastantes, fondos contrastantes, posición, alineamiento e indentación, gráficos como líneas, cajas y barras de color.
Luego que se define la jerarquía visual se debe continuar con el flujo visual que son las pistas que los usuarios tienden a seguir mientras escanean la página, esta íntimamente relacionado con la jerarquía visual, ya que una jerarquía visual bien diseñada establece puntos focales en la página cuando se necesita hacer énfasis en los elementos más importantes y el flujo visual guía a los ojos de esos puntos hacia la información de menos relevancia, los puntos focales son los puntos que los ojos no pueden resistirse ver, la tendencia es verlos del mas fuerte al mas débil, y es buena práctica poner pocos porque tener muchos diluye la importancia de cada uno, se pueden configurar por medio de espacios en blanco contrastes altos, fuentes grandes y movimiento.

Existen varios temas relacionados con la Usabilidad, patrones de diseño, métodos y procedimientos que requieren de su consideración cuando se desarrolla un Portal de Internet, para asegurar el mayor resultado posible, los desarrolladores deben considerar un rango amplio de temas acerca de interfaces de usuario, y trabajar para crear un Sitio Web que permita el mayor desempeño humano posible.

Enlaces relacionados

Jakob Nielsen’s Website

Human-Computer Interaction / User Interface Usability

Guias de diseño de interfaces de usuario

Libro Designing interfaces


Stanford Guidelines for Web Credibility 



A/B Split Testing


Protocolo HTTP

marzo 12, 2007 Deja un comentario

Tim Berners Lee Inventor del WWW describe a Internet como una economía de mercado, en una economía de mercado, cualquiera puede comerciar con cualquiera sin necesidad de ir a un lugar específico en donde se encuentren todos los comerciantes.
Para poder comerciar es necesario ponerse de acuerdo sobre la manera de hacer los tratos, por ejemplo el tipo de moneda que se va a utilizar, así como las reglas de una negociación justa.

El Web no es algo físico que existe en cierto lugar, es un espacio en el cual la información puede existir, para establecer comunicación entre cliente y servidor se necesitan reglas de por ejemplo como interpretar una URI y tener un lenguaje de comunicación común que las dos partes entiendan. El lenguaje que se usa en el Web se llama protocolo HTTP, este protocolo define las reglas de por ejemplo quien habla primero, como se alternaran en la comunicación, y el formato de los mensajes que se intercambian.

El principio fundamental del Web es que cuando alguien hace disponible un recurso (documento, gráfico, sonido, video, etc.) este deba ser accesible por cualquiera, sin ninguna restricción (el tipo de computadora o país de procedencia).
Antes del Web para obtener un recurso externo se necesitaban de complejas series de instrucciones para obtenerlo, al aparecer el Web las personas cambiaron esas complicadas instrucciones por una simple cadena de identificación (URI) que contiene todos los detalles esenciales de una manera compacta.

Todo recurso Web tiene un nombre, de esta manera los clientes pueden seleccionar los recursos en los cuales están interesados, El nombre de recurso de servidor se llama Identificador uniforme de recurso (URI´s Uniform Resource Identifier) los URIs son como las direcciones postales de Internet y están disponibles en dos sabores URN’s y URL’s

Un recurso Web es una fuente de contenido almacenado en un servidor Web. Un ejemplo de contenido Web puede ser un archivo plano de texto, html, imágenes, películas, también pueden ser programas de software que generan contenido sobre demanda. Este contenido dinámico puede generar contenido basado en parámetros en la petición del recurso.

El localizador uniforme de recurso (URL) es la forma más común de URI, los URL describen la ubicación específica de un recurso.
La mayoría de los URL siguen un formato estándar de tres partes principales, la primer parte corresponde al protocolo usado para acceder al recurso que usualmente es el HTTP esta parte es generalmente llamada esquema, La segunda parte da la dirección del servidor Web y la tercer parte es el nombre del recurso en el servidor Web.
Los URL´s definen todo lo necesario para encontrar un recurso en particular, definen el recurso, donde esta localizado y como obtenerlo la sintaxis de un url es

<esquema>://<usuario>:<contraseña>@<host>:<puerto>/<ruta>;<parametros>?< consulta>#<fragmento>

esquema: Que protocolo se usará para acceder el recurso de un servidor.
usuario: Nombre de usuario (opcional algunos esquemas necesitan autentificación para acceder a un recurso)
contraseña: La contraseña que va después del nombre de usuario separado por dos puntos (:)
host: El nombre de host o dirección IP de el servidor que hospeda a el recurso.
puerto: El numero de puerto que el servidor utiliza para manejar las peticiones (opcional el numero de puerto por default para el Web es el 80)
ruta: El nombre local del recurso en el servidor
parámetros: Parámetros separados por ; (opcional, algunos esquemas requeren de especificar parámetros de entrada
consulta: Parámetros para aplicaciones Web especificados por el signo de ?(opcional)
fragmento: Es el nombre de una parte del recurso en especifico, esta no se pasa al servidor se usa internamente por el cliente y va después de poner el signo # (opcional)

El nombre uniforme de recurso (URN) sirve como un único nombre para un contenido en particular, independientemente de donde se localiza el recurso. Esto permite a los recursos moverse de un lugar a otro lugar sin cambiar su dirección. También permite que los recursos sean accedidos por múltiples protocolos de acceso manteniendo el mismo nombre.

HTTP se maneja por medio de transacciones, estas consisten de un comando de petición (enviado de el cliente al servidor), y un resultado de respuesta (enviado del servidor a el cliente). Esta comunicación se pasa por medio de bloques formateados de datos llamados mensajes HTTP, para que el servidor conozca que acción va a desarrollar sobre una petición, cada comando de petición va acompañada por un método, los métodos mas comunes son GET, PUT, DELETE, POST, HEAD, las respuestas del servidor a su vez van acompañados de un código de estado que es un numero de tres dígitos que informa al cliente si la petición ha sido exitosa, o si se requieren mas acciones.

Los mensajes HTTP son simples secuencias de líneas de caracteres, están los mensajes de petición que se envían de clientes Web a servidores Web y los mensajes de respuesta que se envían del servidor al cliente, los formatos entre estos dos tipos de mensajes son muy similares, consisten de tres partes:

La línea de inicio de un mensaje de petición especifica que se va a hacer, la línea de inicio de un mensaje de respuesta indica que paso con la petición.
Cabeceras, cero o mas campos de atributos que consisten en líneas nombre y su valor, separados por dos puntos (:) para un análisis mas fácil, las cabeceras terminan con una línea en blanco.
Cuerpo, después de la línea en blanco esta el cuerpo que es opcional y puede contener cualquier tipo de datos, el cuerpo de los mensajes de petición, lleva los datos al servidor Web; el cuerpo de los mensajes de respuesta regresa datos al cliente. El cuerpo puede contener datos binarios como imágenes video o audio o también puede contener datos de texto.

Ejemplo de mensaje de peticion
GET /inicio.html HTTP/1.0
User-agent: Mozilla/4.75 [en] (Win98; U)
Accept: text/html, image/gif, image/jpeg
Accept-language: enEjemplo de Mensaje de respuesta
HTTP/1.0 200 OK
Date: Sun, 01 oct 2000 23:25:17 GMT
Server: Apache/1.3.11 BSafe-SSL/1.38 (Unix)
Content-length: 403
Content-type: text/html


HTTP es un protocolo de la capa de aplicación del TCP/IP, usa el TCP para transportar sus mensajes de datos.
Antes de que un cliente HTTP pueda mandar un mensaje a un servidor, necesita establecer una conexión TCP entre el cliente y el servidor usando el protocolo de Internet, para establecer esta conexión , se necesita la dirección IP del servidor y el numero de puerto TCP asociado con el software que se esta ejecutando en el servidor.
Por medio del Servicio de nombre de dominio (DNS) se convierten las direcciones IP en nombres para mayor entendimiento de los usuarios.

En el marco de desarrollo de RIA´s es fundamental conocer el protocolo de comunicación HTTP, para poder hacer peticiones mas especificas y lograr un buen manejo de errores y retroalimentación al usuario. Con un buen conocimiento del protocolo sus métodos y funciones se puede por ejemplo lograr un buen sistema de cacheo del lado del cliente y de esta manera aligerar la carga de peticiones al servidor.

A %d blogueros les gusta esto: