<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Braintive &#187; Programación</title>
	<atom:link href="http://www.braintive.com/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.braintive.com</link>
	<description>Hacemos realidad tu proyecto tecnológico</description>
	<lastBuildDate>Tue, 24 Apr 2018 15:28:13 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=4.2.7</generator>
	<item>
		<title>5 editores de texto para programar en Linux</title>
		<link>http://www.braintive.com/5-editores-de-texto-para-programar-en-linux/</link>
		<comments>http://www.braintive.com/5-editores-de-texto-para-programar-en-linux/#comments</comments>
		<pubDate>Fri, 08 Aug 2014 15:00:37 +0000</pubDate>
		<dc:creator><![CDATA[Nicolás Trillo]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[desarrollo]]></category>
		<category><![CDATA[editores]]></category>
		<category><![CDATA[ides]]></category>
		<category><![CDATA[lenguajes]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.braintive.com/?p=1240</guid>
		<description><![CDATA[Cuando pasamos mucho tiempo frente al monitor escribiendo código, no importa en que lenguaje, es fundamental utilizar una herramienta que nos permita trabajar más eficientemente. La elección de un editor de texto para programar no es algo que se deba hacer a la ligera, sino que hay que valorar las diferentes opciones y  nuestras necesidades.  Usar [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Cuando pasamos mucho tiempo frente al monitor escribiendo código, no importa en que lenguaje, es fundamental utilizar una herramienta que nos permita trabajar más eficientemente. La <strong>elección de un editor de texto para programar</strong> no es algo que se deba hacer a la ligera, sino que hay que valorar las diferentes opciones y  nuestras necesidades.  Usar un buen editor nos puede ahorrar tiempo en el desarrollo de un proyecto.</p>
<p><span id="more-1240"></span></p>
<p>Una de las características más destacadas de todo sistema GNU/Linux es el gran entorno de <b>programación </b>que ofrece y que posibilita trabajar con todo tipo de <b>lenguajes </b>y módulos.Contamos con diferentes editores cada uno con sus características y plugins instalables para personalizarlo como lo necesitemos. La mayoría de estos programas se caracterizan por ser libres, es decir, totalmente <strong>gratis</strong> para el que quiera acceder a utilizarlos.</p>
<p>Al momento de investigar cual queremos, tenemos que saber que hay dos grupos. Tenemos los editores minimalistas y los IDE&#8217;s. Vamos a nombrar los mas usados y que recomendamos.</p>
<h3><strong>Editores minimalistas:</strong></h3>
<p>Estos editores se caracterizan por <strong>no ofrecer prácticamente ninguna funcionalidad compleja</strong> (de hecho lo promocionan como una ventaja), son rápidos, no necesitan una buena maquina para funcionar.</p>
<p>El mas famoso:</p>
<p><strong>VI y VIM</strong> son unos magníficos editores de textos basado en terminal, probablemente, de los más utilizados en todo el mundo. Reconoce una gran cantidad de lenguajes de programación y cuenta con una gran cantidad de características y funciones (<em>numerado de líneas, autocompletado, resaltado de sintaxis, reemplazo de texto mediante expresiones regulares, etc.</em>) que los hacen uno de los editores preferidos por programadores y administradores de sistemas. Vim te ayuda mas con colores en el codigo y Vi es blanco y negro.</p>
<p>Es open source (GPL) y suele estar disponible para cualquier distribución GNU/Linux, sin embargo, también está disponible para sistemas como Mac o Windows, incluso con interfaz gráfica: gVim</p>
<p><img class="wp-image-1241" src="http://www.braintive.com/wp-content/uploads/2014/08/ri_vim2.png" alt="Vim" width="601" height="399" /></p>
<p>URL | <a href="http://www.vim.org/" target="_blank">Vim</a></p>
<h3>Editores IDE&#8217;S:</h3>
<p><strong>Geany</strong> es uno de los  IDE mas ligeros y con excelentes herramientas que nos van ayudar a llevar a cabo un proyecto. Tiene como principal objetivo disponer de un IDE con funciones básicas, con una curva de aprendizaje muy sencilla y por último, aunque no menos importante, que no sobrecargue el sistema.</p>
<p><img class="aligncenter wp-image-1245" src="http://www.braintive.com/wp-content/uploads/2014/08/geany.png" alt="geany" width="600" height="427" /></p>
<p>URL | <a href="http://geany.org/" target="_blank">Geany</a></p>
<p><strong>NetBeans</strong> es tambien un IDE bastante ligero, soporta el desarrollo para entornos en los que se utilice Java, PHP, C/C++, Groovy o HTML5. Ofrece soporte para bases de datos,control de versiones, minify de los archivos y muchas características más.</p>
<p><a href="http://www.braintive.com/wp-content/uploads/2014/08/netbeans.png"><img class="aligncenter wp-image-1243" src="http://www.braintive.com/wp-content/uploads/2014/08/netbeans.png" alt="netbeans" width="600" height="363" /></a></p>
<p>URL | <a href="https://netbeans.org/" target="_blank">NetBeans</a></p>
<p><strong>Aptana Studio</strong> es un IDE creado expresamente para tecnologías web como AJAX, PHP, Ruby, Python, HTML, CSS, etc. Ofrece al programador la misma interfaz de NetBeans, adaptada a las necesidades del desarrollador front-end, como estructura de etiquetas HTML, acceso a una terminal, control de versiones y algunas características más.</p>
<p><a href="http://www.braintive.com/wp-content/uploads/2014/08/aptana.png"><img class="aligncenter wp-image-1242" src="http://www.braintive.com/wp-content/uploads/2014/08/aptana.png" alt="aptana" width="600" height="375" /></a></p>
<p>URL | <a href="http://www.aptana.org/products/studio3" target="_blank">Aptana Studio</a></p>
<p><strong>SlimText</strong> es una extensión para el navegador Chrome que permite disponer de un editor de textos para programar, sencillo y cómodo, con soporte para múltiples pestañas, que recuerde los archivos abiertos y con soporte para tareas básicas como reemplazo de textos (con expresiones regulares), gestor de temas y soporte para combinaciones de teclas tipo Vim o Emacs.</p>
<p><a href="http://www.braintive.com/wp-content/uploads/2014/08/slimtext.png"><img class="aligncenter wp-image-1244" src="http://www.braintive.com/wp-content/uploads/2014/08/slimtext.png" alt="slimtext" width="600" height="475" /></a></p>
<p>URL | <a href="http://slimtext.org/" target="_blank">SlimText</a></p>
<p>&nbsp;</p>
<p>Como vemos, existen varias herramientas para programar en GNU/Linux. Solo es cuestión de ver cuál es la que mejor se adapte a nuestras necesidades y a nuestro estilo de programación.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/5-editores-de-texto-para-programar-en-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>5 tips de PostgreSQL para optimizar tus aplicaciones</title>
		<link>http://www.braintive.com/5-tips-postgresql-para-optimizar-tus-aplicaciones/</link>
		<comments>http://www.braintive.com/5-tips-postgresql-para-optimizar-tus-aplicaciones/#comments</comments>
		<pubDate>Tue, 05 Aug 2014 13:03:32 +0000</pubDate>
		<dc:creator><![CDATA[Fernando Finelli]]></dc:creator>
				<category><![CDATA[Bases de datos]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.braintive.com/?p=1207</guid>
		<description><![CDATA[PostgreSQL es un sistema de bases de datos opensource, tiene más de 15 años de desarrollo y hoy en día es uno de los motores más poderosos y flexibles para utilizar con cualquier tipo de plataforma. En este post explicamos 5 tips sencillos pero que tal vez no sabías de este motor de bases de [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><a title="PostgreSQL" href="http://www.postgresql.org" target="_blank">PostgreSQL</a> es un sistema de bases de datos opensource, tiene más de 15 años de desarrollo y hoy en día es uno de los motores más poderosos y flexibles para utilizar con cualquier tipo de plataforma. En este post explicamos 5 tips sencillos pero que tal vez no sabías de este motor de bases de datos.<br />
<span id="more-1207"></span></p>
<p>En esta entrada vamos a ver 5 funciones que tal vez no sabías que se podían hacer con PostgreSQL pero que al saber cuándo y dónde utilizarlas nos puede simplificar el desarrollo de nuestras aplicaciones.</p>
<p><strong>1. Un único query que retorne datos asociados de otra tabla.</strong></p>
<p>Por ejemplo, listado de usuarios y los intereses de cada uno (que se encuentan en otra tabla)</p>
<p>Funciones: array_agg y array_to_string</p>
<blockquote><p><em>select u.nombre, u.apellido</em><br />
<em> ,(select array_to_string(array_agg(intereses),&#8217;,&#8217;) from usuario_interes where usuario_id = u.usuario_id) as intereses</em><br />
<em>from usuario u</em></p></blockquote>
<p>Retorna los intereses como: &#8220;futbol,basket,tenis&#8221;</p>
<p>&nbsp;</p>
<p><strong>2. Obtener la cantidad total de registros afectados en un LIMIT sin necesidad de realizar otro query count(*).</strong></p>
<p>Ideal para paginación de resultados, pudiendo colocar el total general de registros, más allá del total de cada página.</p>
<p>Función: OVER()</p>
<blockquote><p>select nombre, apellido, count(*) OVER() as total<br />
from usuarios<br />
limit 10 offset 30</p></blockquote>
<p>&nbsp;</p>
<p><strong>3. Obtener un valor determinado sobre un listado de elementos separados por un caracter común.</strong></p>
<p>función: split_part</p>
<blockquote><p>select split_part(&#8216;a,b,c,d&#8217;, &#8216;,&#8217; , 2);</p></blockquote>
<p>Resultado: &#8220;b&#8221;</p>
<p>Ideal para parsear campos en donde se mantiene alguna normalización que permita obtener algún dato en particular. Por dar un ejemplo, un número telefónico separado por &#8220;-&#8220;, se puede obtener por un lado la característica y por otro la numeración.</p>
<p>&nbsp;</p>
<p><strong>4- Formateo de fechas y retornarlas en el uso horario correspondiente.</strong></p>
<p>Cuando utilizar now() o current_timestamp para obtener la fecha del sistema, esta se va a guardar en el formato horario del servidor, que seguramente va a ser diferente al nuestro</p>
<blockquote><p>select to_char(fecha_creacion AT TIME ZONE &#8216;-03:00&#8242;, &#8216;DD/MM/YYYY&#8217;) as fecha<br />
from usuario</p></blockquote>
<p>&nbsp;</p>
<p><strong>5- Como usar FullText Index, para realizar búsquedas ágiles y contextuales.</strong></p>
<p>Útil para realizar un única búsqueda y que esta se realize en muchos campos, sin necesidad de utilizar un like por cada campo. Además la performance utilizando fulltext es muy buena y se puedan agregar lógica en las búsquedas.</p>
<p>Crear un campo en la tabla que contengan todos los valores por lo que se quiere ubicar el registro.</p>
<blockquote><p>search varchar(512);</p></blockquote>
<p>Crear un campo tsvector para poder indexar el contenido.</p>
<blockquote><p>textsearchable_index tsvector;</p></blockquote>
<p>Luego cada vez que se inserta o se actualizan los datos se debe realizar lo siguiente</p>
<blockquote><p>UPDATE usuario set search = coalesce(nombre,&#8221;) || &#8216; &#8216; || coalesce(apellido,&#8221;) || &#8216; &#8216; || coalesce(email,&#8221;);</p>
<p>UPDATE usuario SET textsearchable_index = to_tsvector(search);</p></blockquote>
<p>Para realizar las búsquedas se debe utilizar</p>
<blockquote><p>select *<br />
from usuario<br />
where textsearchable_index @@ to_tsquery(&#8216;Juan&#8217;)</p>
<p>select *<br />
from usuario<br />
where textsearchable_index @@ to_tsquery(&#8216;Juan &amp; Perez&#8217;)</p>
<p>select *<br />
from usuario<br />
where textsearchable_index @@ to_tsquery(&#8216;Jua:*&#8217;)</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/5-tips-postgresql-para-optimizar-tus-aplicaciones/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mediator.js: JavaScript tiene su torre de control</title>
		<link>http://www.braintive.com/mediator-js-javascript-tiene-su-torre-de-control/</link>
		<comments>http://www.braintive.com/mediator-js-javascript-tiene-su-torre-de-control/#comments</comments>
		<pubDate>Fri, 01 Aug 2014 13:16:40 +0000</pubDate>
		<dc:creator><![CDATA[Nicolás Trillo]]></dc:creator>
				<category><![CDATA[Diseño web]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Tutoriales]]></category>
		<category><![CDATA[asicronico]]></category>
		<category><![CDATA[asincronismo]]></category>
		<category><![CDATA[canales de comunicacion]]></category>
		<category><![CDATA[jack lawson]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[mediator]]></category>
		<category><![CDATA[mediator.js]]></category>
		<category><![CDATA[programacion]]></category>

		<guid isPermaLink="false">http://www.braintive.com/?p=1190</guid>
		<description><![CDATA[mediator.js fue escrito por Jack Lawson para ayudarnos a resolver con mayor facilidad los problemas que surgen al programar una aplicación asincrónica. No sólo es muy útil y fiable (tuve la posibilidad de utilizar mediator en un proyecto de gran envergadura), sino que también es extremadamente liviano (1,12 kb) y no tiene dependencias con ninguna [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong><em>mediator.js</em></strong> fue escrito por <a title="Twitter" href="https://twitter.com/ajacksified" target="_blank">Jack Lawson</a> para ayudarnos a resolver con mayor facilidad los problemas que surgen al programar una aplicación asincrónica. No sólo es muy útil y fiable (tuve la posibilidad de utilizar mediator en un proyecto de gran envergadura), sino que también es extremadamente liviano (1,12 kb) y no tiene dependencias con ninguna librería.</p>
<p><span id="more-1190"></span></p>
<p>Imaginemos por un momento que estamos en un aeropuerto. Aviones aterrizan y despegan con total coordinación. Los vuelos de decenas de compañías en ese aeropuerto se encuentran organizados y sincronizados con los de otros aeropuertos en el resto del mundo.</p>
<p>La torre de control aéreo recibe información de todas partes y toma las decisiones que le son entregadas a los pilotos para que todo se realice sin inconvenientes. Esto es <em>mediator.js</em>, una pequeña clase <em>JavaScript</em> que centraliza la comunicación y nos permite crear canales por los cuales se puede enviar o recibir información, sin tener que preocuparnos por el sincronismo del código que escribamos.</p>
<h3>Cómo utilizarla</h3>
<p>La forma de uso es muy sencilla: se crea un canal de datos con un nombre a nuestra elección. Luego, podemos elegir que parte del código va a utilizar ese canal, indicando si vamos a enviar datos <span style="text-decoration: underline;">(publicando</span> en el canal) o sólo nos prepararemos a &#8220;escuchar&#8221; <span style="text-decoration: underline;">(suscribiendonos</span> al canal) la información que pueda llegar a través de ese medio.</p>
<p>Para lograr esto, mediator.js nos provee de <strong>4 métodos básicos en su API</strong>:</p>
<ul>
<li><strong>publish</strong>: nos permite publicar información en un canal determinado, sin tener que preocuparnos por quién se encargará de hacer llegar esa información a los suscriptores.</li>
<li><strong>subscribe</strong>: a simples rasgos nos permite decir a qué canal de información nos suscribiremos y qué elegimos hacer con lo que recibamos allí.</li>
<li><strong>remove</strong>: nos permite eliminar un canal de información, para romper el lazo entre quien publica y sus suscriptores</li>
<li><strong>once</strong>: nos permite suscribirnos a un canal de información pero, esta vez sólo recibirá datos por única vez. Luego eliminará su suscripción.</li>
</ul>
<h3>Ejemplo</h3>
<p>Para entender mejor el funcionamiento, podemos ver el ejemplo que propone Jack Lawson en la <a title="mediator.js - Sitio oficial" href="http://thejacklawson.com/Mediator.js/" target="_blank">web oficial</a> de esta clase:</p>
<pre>var mediator = new Mediator();</pre>
<pre>// Muestra un alert box con los datos cuando el mensaje es publicado en el canal
// Subscribe retorna el objeto "Subscriber"
mediator.subscribe("message", function(data){ alert(data); });
mediator.publish("message", "Hello, world");</pre>
<pre>// Otro ejemplo de uso, con objetos JS:
mediator.subscribe("channel", function(data){ alert(data.Message); }
mediator.publish("channel", { Message: "Hey!", From: "Jack" }); //alerts
</pre>
<h3>Uso en el mundo real</h3>
<p>Nosotros utilizamos esta clase para nuestro cliente <a title="Datafactory" href="http://www.datafactory.la" target="_blank">DataFactory</a> donde necesitamos procesar gran cantidad de estadísticas deportivas y mostrarlo en varias pantallas de una aplicación. Con mediator creamos un canal por incidencia (pases, tiros al arco, tiros libres, goles, etc), luego cada módulo que necesitaba esta información solo tenia que suscribirse al canal correspondiente, esperando que le lleguen los datos ya procesados.</p>
<h3>Resumen</h3>
<p>Finalmente podemos destacar que mediator.js no es sólo una herramienta muy útil para utilizar en un navegador (tanto como JavaScript nativo o cargándolo modularmente mediante RequireJS), ya que también es compatible con Node JS, (descargando por NPM el paquete mediator-js). Sin dudas este pequeño código de 1kb se merece un lugar en nuestros proyectos web.</p>
<p>&nbsp;</p>
<p><strong>Para más información recomendamos leer:</strong></p>
<p><a href="http://addyosmani.com/resources/essentialjsdesignpatterns/book/#mediatorpatternjavascript" target="_blank">El patrón Mediator &#8211; Por Addy Osmani</a></p>
<p><a href="http://thejacklawson.com/Mediator.js/" target="_blank">Sitio oficial de mediator.js</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/mediator-js-javascript-tiene-su-torre-de-control/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tu tienda social en Facebook (CMCommerce)</title>
		<link>http://www.braintive.com/tu-tienda-social-en-facebook-cmcommerce/</link>
		<comments>http://www.braintive.com/tu-tienda-social-en-facebook-cmcommerce/#comments</comments>
		<pubDate>Mon, 12 Mar 2012 14:46:24 +0000</pubDate>
		<dc:creator><![CDATA[Alfredo Fabretti]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Casos de éxito]]></category>
		<category><![CDATA[Negocios]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[Social]]></category>

		<guid isPermaLink="false">http://blog.braintive.com/?p=636</guid>
		<description><![CDATA[Y llegó el día en el que pudimos salir al público con la versión beta de este proyecto en el que venimos trabajando hace tiempo. &#8220;Más de 800 millones de personas utilizan Facebook diariamente, pasando un promedio de 25 minutos al día. Ya tenés tu negocio y tu página de Facebook, con CM Commerce podés tener tu [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Y llegó el día en el que pudimos salir al público con la versión beta de este proyecto en el que venimos trabajando hace tiempo.</p>
<p><em>&#8220;Más de <strong>800 millones de personas utilizan Facebook diariamente</strong>, pasando un promedio de <strong>25 minutos al día</strong>. Ya tenés tu negocio y tu página de Facebook, con CM Commerce podés tener tu tienda virtual dentro de Facebook y poder llegar a millones de clientes en poco tiempo.&#8221;</em></p>
<p><span id="more-636"></span></p>
<p>En nuestro anterior post llamado <a title="¿Debería una empresa tener presencia en Facebook?" href="http://blog.braintive.com/2011/06/social-media-y-facebook/">¿Debería tener una empresa presencia en Facebook? </a>comentábamos cómo la manera de comprar en línea estaba cambiando gracias a las redes sociales y cuáles eran las ventajas de tener presencia en Facebook para una empresa.</p>
<p>El resultado de nuestro trabajo es <strong>CM Commerce</strong>, que te ofrece la posibilidad de tener una tienda virtual en tu página de fans (fanpage) de manera instantánea y completamente gratis.</p>
<p>Tu tienda virtual será un sitio de e-commerce completo, con carrito de compras, categorías, portales de pago, descuentos y muchas funciones más.</p>
<p>Pero lo más importante: tendrás las herramientas virales de Facebook en cada rincón de tu tienda, lo que te permitirá llegar no sólo a tus fans, también a los amigos y amigos de tus fans.</p>
<p>Si te interesa probar la beta, entrá a este link: <a title="CM Commerce" href="http://www.cmcommerce.biz">http://www.cmcommerce.biz</a> y hacé click en Crear tienda.</p>
<p>También estamos participando en el concurso <em>Open App</em>, tu voto nos ayuda a estar entre los finalistas. Poné <strong>Me gusta</strong> en el recuadro negro de este link: <a href="http://www.openapp.com.ar/Proyectos/Ver/B0AFC">http://www.openapp.com.ar/Proyectos/Ver/B0AFC</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/tu-tienda-social-en-facebook-cmcommerce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Daño colateral – La Guerra de los Browsers.</title>
		<link>http://www.braintive.com/dano-colateral-la-guerra-de-los-browsers/</link>
		<comments>http://www.braintive.com/dano-colateral-la-guerra-de-los-browsers/#comments</comments>
		<pubDate>Wed, 17 Aug 2011 10:30:33 +0000</pubDate>
		<dc:creator><![CDATA[Fernando Finelli]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Diseño web]]></category>
		<category><![CDATA[Programación]]></category>

		<guid isPermaLink="false">http://blog.braintive.com/?p=150</guid>
		<description><![CDATA[Hace años que comenzó una guerra entre los principales Browsers para determinar quién va a dominar este gran mercado, la primer guerra en internet fué dada entre el Internet Explorer de Microsoft y el Navigator de Netscape, que tuvo un claro ganador gracias a un monopolio e influencias económicas,actualmente estamos siendo partícipes de la segunda [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Hace años que comenzó una guerra entre los principales Browsers para determinar quién va a dominar este gran mercado, la primer guerra en internet fué dada entre el Internet Explorer de Microsoft y el Navigator de Netscape, que tuvo un claro ganador gracias a un monopolio e influencias económicas,<span id="more-150"></span>actualmente estamos siendo partícipes de la segunda guerra que se da entre nuevamente el Internet Explorer y el Mozilla FireFox  (que parte del código lo heredó del Netscape) y se están sumando nuevas fuerzas como el Chrome de Google que tiene un gran peso por lo que representa la marca en Internet.</p>
<p>Esta competencia trae aparejado en la euforia de salir victorioso la creación de sus propios estándares HTML para mostrar una clara diferencia con la competencia, dando un gran dolor de cabeza a los desarrolladores, ya que tenemos no solo que probar nuestro código en los diferentes browsers, sino que en muchas ocasiones adaptarlos por problemas de compatibilidad. FireFox es uno de los navegadores que más respeta la compatibilidad del código (salvo el recién salido Firefox 5 que ya nos hemos encontrado con diferencias en la visualización de algunos divs), así que diseñar y probar el código HTML en FireFox es una forma de asegurarse un código estándard. También el Chrome es un muy buen navegador que trae de forma nativa herramientas que ayudan a los desarrolladores a identificar los problemas.</p>
<p>En Braintive enfrentamos esta problemática basándonos siempre en los estándares HTML brindados por el <a href="http://www.w3.org/">W3C </a>(The World Wide Web Consortium), una comunidad  internacional que trabaja para desarrollar estándares web, liderado por el ‘inventor de la web’ Tim Berners-Lee. La comisión además de brindar documentación y guías, posee una herramienta para realizar <a href="http://validator.w3.org/">validaciones</a> de nuestro código HTML e informarnos de las diferencias de compatibilidad, una herramienta muy útil para desarrolladores y diseñadores.</p>
<p>Cada desarrollo que realizamos es testeado no solo por el sector de control de calidad, sino también utilizamos una serie de herramientas que verifican la visualización del contenido HTML resultante en los diferentes navegadores, así como también como nos visualizarían los robots de búsqueda de Google, Yahoo, etc..</p>
<p>Un referente nuestro de usabilidad es Jakob Nielsen y citando su cuarta heurísticas de usabilidad dice:</p>
<blockquote><p><strong>Consistencia y estándares.</strong> Los usuarios no deben tener que preguntarse si las diversas palabras, situaciones, o acciones significan la misma cosa. En general siga las normas y convenciones de la plataforma sobre la que está implementando el sistema.</p></blockquote>
<p style="text-align: left;">El futuro nos trae aún más problemas de compatibilidad y dolores de cabeza para los desarrolladores, el nuevo HTML5 y su soporte en cada navegador!.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/dano-colateral-la-guerra-de-los-browsers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Discriminación 2.0</title>
		<link>http://www.braintive.com/discriminacion-2-0/</link>
		<comments>http://www.braintive.com/discriminacion-2-0/#comments</comments>
		<pubDate>Tue, 10 May 2011 11:00:10 +0000</pubDate>
		<dc:creator><![CDATA[Fernando Finelli]]></dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Diseño web]]></category>
		<category><![CDATA[Programación]]></category>
		<category><![CDATA[accesibilidad]]></category>

		<guid isPermaLink="false">http://blog.braintive.com/?p=16</guid>
		<description><![CDATA[Muchas veces criticamos y nos asombramos de instituciones, hospitales, bancos o lugares de acceso público que no cuentan con rampas para discapacitados, pero es muy común que a la hora de desarrollar un sitio web terminemos haciendo lo mismo. La accesibilidad en un sitio web se refiere a la capacidad del mismo para ser accedido [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>Muchas veces criticamos y nos asombramos de instituciones, hospitales, bancos o lugares de acceso público que no cuentan con rampas para discapacitados, pero es muy común que a la hora de desarrollar un sitio web terminemos haciendo lo mismo.</p>
<p style="text-align: left;"><span id="more-59"></span></p>
<p style="text-align: left;">La accesibilidad en un sitio web se refiere a la capacidad del mismo para ser accedido por cualquier persona independientemente de sus limitaciones físicas (por ejemplo la discapacidad visual), también hace referencia no solo al acceso, sino también al uso, donde toca ya cuestiones de ‘usabilidad’.</p>
<p style="text-align: left;">Prácticamente nadie toma en cuenta esta premisa a la hora de desarrollar un sitio web y suponen que las personas detrás podrán acceder sin problemas al contenido, sin darse cuenta el potencial que tiene un sitio que puede ser accedido por cualquier persona, ya que los accesos en definitiva se traducen de alguna manera a un valor de retorno.</p>
<p style="text-align: left;">Por ejemplo, suponemos que una persona podría estar viendo un determinado botón de acceso al contenido, de un color, forma o tamaño pensado para  alentar al usuario a hacer click, cuando en realidad esta persona podría estar trabajando con el monitor apagado, ya que es una persona ciega. ¿Cómo puede ‘ver’ entonces el botón?,  son utilizados programas que leen el contenido y avisan al usuario donde pueden hacer click, el botón como figura no genera ningún valor, ya que no puede ser visto, el valor aquí lo genera el texto.</p>
<p style="text-align: left;">Las personas ciegas o con disminución considerable de la vista utilizan programas que leen el contenido de la página web y de esta forma pueden navegar sin problemas, se sorprenderían observar como ellos trabajan con el monitor apagado y pueden perfectamente ‘visualizar’ cualquier contenido. Un software utilizado para esto es el <a href="http://es.wikipedia.org/wiki/JAWS_%28software%29">JAWS</a></p>
<p style="text-align: left;">En muchos países ya existe legislación que obliga a determinas páginas de organismos públicos o de algunas empresas a brindar contenido accesible en sus sitios web. El WAI (Web Accessibility Initiative) grupo perteneciente al W3C (The World Wide Web Consortium) también creó pautas para ayudar a desarrollar contenido accesible.</p>
<p>No es necesario sacrificar el diseño a la  hora de hacer un sitio web accesible, simplemente hay que seguir una serie de pautas para guiar el diseño de páginas web a un diseño accesible. Algunas ideas que implementamos en Braintive a la hora de desarrollar un sitio web, para no limitar el acceso de nadie al contenido:</p>
<ul style="text-align: left;">
<li>Todas las páginas deben tener la etiqueta de cabecera TITLE, explicando lo que el usuario va a encontrar, por ejemplo: Página principal, Listado de productos.</li>
<li>Usar correctamente las etiquetas h1, h2, .. donde debe informar la importancia que tienen los títulos y textos dentro de la página.</li>
<li>No utilizar tablas para centrar textos o colocar secciones, las tablas deben ser utilizadas para grillas, el posicionamiento de texto se deben realizar por medio de estilos css.</li>
<li>Utilizar la etiqueta ABBR para brindar detalles sobre abreviaciones, por ejemplo si el texto dice cant. se debe informar que el texto correcto es ‘cantidad’.</li>
<li>Todas las imágenes deben tener el atributo ALT con el texto al que hace referencia la imagen, si el botón es una imagen que dice ‘Aceptar’, el atributo ALT debe tener el mismo texto. Si se requiere mayor detalle se debe utilizar el atributo LONGDESC</li>
<li>Los links deben tener el atributo TITLE informando la acción que genera el click, más allá del texto, por ejemplo si link dice ‘compras’, el atributo TITLE debería contener ‘Listado de mis compras mensuales’.</li>
<li>No utilizar palabras comunes para definir links, como &#8216;aquí&#8217;, utilizar frases más descriptivas dentro de los links.</li>
<li>Definir atajos de teclado en los links, atributo ACCESSKEY.</li>
<li>Si se utilizan FRAMES se debe colocar el titulo descriptivo en el atributo TITLE.</li>
<li>Los listados de selección o navegación deben ser colocados dentro de las etiquetas UL y LI, luego por medio de los estilos css se brinda un correcto diseño.</li>
<li>Dentro de los formularios se debe utilizar etiquetas standards que son interpretadas por todos los lectores web, que luego por estilos css se puede colocar el diseño acorde al sitio web. Estas son: LEGEND, FIELDSET, LABEL. Por ejemplo la etiqueta LABEL relaciona el texto con el elemento del formulario.</li>
<li>Tener en cuenta los colores que se asignarán a los botones, existen programas para evaluar como un daltónico los visualizará.</li>
<li>Dar la posibilidad de agrandar el texto de las letras, por default deben tener un tamaño correctamente legible.</li>
<li>Si se utiliza javascript, tener un plan B que funcione con javascript desactivado, ya que es posible que algunos lectores no lo soporten.</li>
<li><strong>Evitar el uso de FLASH!</strong> aunque las versiones nuevas de flash y componentes que se agregan a la hora de desarrollar dicen poseer soporte de accesibilidad, existe la posibilidad de incompatibilidad en la lectura del flash por medio del navegador que utiliza el usuario que tienen inconvenientes de accesibilidad. El FLASH es un binario (plugin) que no tiene las etiquetas estándares de HTML por lo tanto imposibilita la lectura por medio de los programas utilizados por personas ciegas para interpretar el contenido web.</li>
</ul>
<p>No hay que considerar pérdida de tiempo en implementar estas técnicas, es fundamental no limitar el acceso al contenido.</p>
<blockquote style="text-align: left;"><p><strong><br />
</strong></p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.braintive.com/discriminacion-2-0/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
