<?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>deMartinaCode &#187; Programación</title>
	<atom:link href="http://www.demartinacode.com/archives/category/programacion/feed" rel="self" type="application/rss+xml" />
	<link>http://www.demartinacode.com</link>
	<description>Expertos en Comercio Electrónico</description>
	<lastBuildDate>Fri, 03 Sep 2010 10:45:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>El problema de ir a la moda&#8230;.</title>
		<link>http://www.demartinacode.com/archives/221</link>
		<comments>http://www.demartinacode.com/archives/221#comments</comments>
		<pubDate>Thu, 20 Aug 2009 10:25:39 +0000</pubDate>
		<dc:creator>jmacias</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Aplicaciones Web]]></category>

		<guid isPermaLink="false">http://www.demartinacode.com/?p=221</guid>
		<description><![CDATA[Ya sabía que mi artículo sobre aplicaciones de Web vs aplicaciones tradicionales no iba a ser bien acogido, por que, mientras casi todo el mundo mira hacía aplicaciones web, reflexiono y justifico el seguir haciendo aplicaciones tradicionales.
Antes de nada, está claro que si vas a hacer un portal, un foro, o una red social tienes [...]]]></description>
			<content:encoded><![CDATA[<p>Ya sabía que<a href="http://www.demartinacode.com/?p=60"> mi artículo</a> sobre aplicaciones de Web vs aplicaciones tradicionales no iba a ser bien acogido, por que, mientras casi todo el mundo mira hacía aplicaciones web, reflexiono y justifico el seguir haciendo aplicaciones tradicionales.</p>
<p>Antes de nada, está claro que si vas a hacer un portal, un foro, o una red social tienes que utilizar tecnología web, pero si vas a hacer una aplicación de gestión, el photoshop, o una herramienta para grabar DVDs, las aplicaciones de escritorio, por ahora, son mejores.</p>
<p>En el año 2000, hacíamos aplicaciones web en ASP, desarrollé un framework, que permitía hacer aplicaciones en un tiempo casi igual que aplicaciones tradicionales, pero claro, con la limitaciones que teníamos entonces con los browsers, no obstante generamos algo similar a AJAX, y pudimos añadir bastante interación entre browser y servidor.</p>
<p>Por entonces, la empresa en el que trabajaba, encargo a una gran consultora que estudiara cual era el futuro de la tecnología web, y esa gran consultora dicidió que había que migrar a Java. Así que la empresa, empezó a mirar todo a JSP, por entonces dejé la empresa, no me apetecía abandonar mi know-how en ASP y tener que empezar desde el principio.</p>
<p>En el 2005 volví a la empresa, a incorporarme en uno de esos proyectos Java, durante esos años, habían migrado muchas aplicaciones a JSP, despúes las habían vuelto a migrar a Servlets, después a Webmacro y ahora volvían a cambiar para utilizar Struts.</p>
<p>En el 2007, nos pidieron que analizaramos las distintas tecnologías disponibles, por que se proponían a dar el gran paso y migrar una aplicación de más de 1000 pantallas, con un coste de unos 10 millones de euros. Durante el análisis, se propuso esperar a la nueva versión de Struts, a utilizar JSF, incluso volver a ASP.</p>
<p>A mi, me pareción una aberración ir a la &#8220;moda&#8221;, supongo que a día de hoy se están planteando utilizar AJAX, o incluso Ruby. Cuando hablamos de algo &#8220;tan grande&#8221; no podemos estar dependiendo de tecnologías que no están consolidadas.</p>
<p>Si nos fijamos como lo hacen los grandes como Oracle, SAP, etc&#8230; ellos tienen su propia tecnología, no dependen de la moda, en lugar de dedicar tiempo a programar en web, con struts, o con JSF, lo que hacen es definir su interfaz en un formato propio, y luego lo presentan en Web o en aplicación tradicional, o como quieran.</p>
<p>En software libre existe algo parecido, es llama XUL, lo utiliza por ejemplo Google en su software AdWords Editor.</p>
<p>Con la especificación de interfaz, independiente de la tecnología, nos aseguramos una evolución constante de nuestro software. No tenemos ni idea, de que estará de moda dentro de 3 años, lo mismo, AJAX desaparece&#8230;&#8230;</p>
<p>Existen muchas aplicaciones OpenSource que utilizan tecnologías similares como OpenBrave, OpenErp, etc..</p>
<p>Así, que con este conocimiento, al empezar un proyecto, tengo varias alternativas:</p>
<ul>
<li>Desarrollo en Web, sabiendo que estar a la moda tiene un coste extremadamente alto.</li>
<li>Desarrollo en XUL o tecnología propia, que tiene un coste alto inicial en desarrollo de frameworks, herramientas, etc&#8230;</li>
<li>Desarrollo en Escritorio, que tiene un coste muy bajo, que la tecnología ha madurado ya, y que no se esperan cambios radicales en los próximos años.</li>
</ul>
<p>He optado por hacer aplicaciones de Escritorio, por tiempo y coste, en otra situación hubiera elegido XUL, pero nunca un desarrollo web.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.demartinacode.com/archives/221/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Aplicación Escritorio vs Aplicación web</title>
		<link>http://www.demartinacode.com/archives/60</link>
		<comments>http://www.demartinacode.com/archives/60#comments</comments>
		<pubDate>Tue, 14 Jul 2009 17:17:50 +0000</pubDate>
		<dc:creator>jmacias</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Usabilidad]]></category>

		<guid isPermaLink="false">http://www.demartinacode.com/?p=60</guid>
		<description><![CDATA[Aplicación Escritorio vs Aplicación web.
10 razones para no utilizar una aplicación web]]></description>
			<content:encoded><![CDATA[<p>Se ha hablado mucho de este tema, y se seguirá hablando durante mucho tiempo. Mientras que las grandes empresas nos dicen que el futuro son las aplicaciones web, que <strong>se puede</strong> hacer lo mismo que con una aplicación de escritorio, etc.., la realidad y el usuario, nos dice otra cosa.</p>
<p>Como ejemplo siempre pongo Google, tiende a desarrollar todo en Web, sin embargo, cuando hay dinero por en medio y el usuario lo pide, hace una aplicación de escritorio, como el editar de anuncios AdWords Editor.</p>
<p>Seamos prácticos, las aplicaciones web tardarán algunos años más en equiparse a las de escritorio, pero además, no sólo se tienen que equiparar, hay que equiparar también la facilidad de desarrollo en web.</p>
<p><strong>¿Por qué son mejores las aplicaciones de Escritorio?</strong></p>
<p>Estas son mis razones, está claro que se pueden solucionar de una forma u otra, pero, siguen siendo un grave problema.</p>
<p><em>1. Botón Atrás. </em>Parece una tontería, pero no lo es, el botón atrás del explorador es uno de los mayores enemigos de las aplicaciones web, generando multitud de errores diferente, por que, en algunos casos, puede que vaya a la pantalla anterior, pero en otros casos, acabamos con registros duplicados, formularios que se vacían sólos, etc&#8230;</p>
<p><em>2. Tecla Borrar.</em> La tecla borrar, en cualquier navegador, es volver atrás, sabéis lo que fastidia estar en medio de un formulario y darle a borrar y que se vaya a la pantalla anterior y tener que empezar de nuevo????</p>
<p><em>3. La sesión.</em> Te llaman por teléfono, vuelves a tu teclado, y cuando le das a aceptar&#8230; pummmm La sesión a expirado. Ha empezar de nuevo o&#8230; no se sabe por donde&#8230;</p>
<p><em>4. Múltiples Ventanas. </em>Salvo contadas excepciones, como WordPress, o alguno más, la mayoría de las aplicaciones web sólo son capaces de hacer una sola cosa a la vez. Me explico, estoy escribiendo este artículo, y al mismo tiempo puedo dar de alta Categorías, para hacer otra cosa, tendría que abrir una nueva ventana/pestña!!!! En las aplicaciones de Escritorio puedes hacer muchas cosas al mismo tiempo.</p>
<p><em>5. Acceso a las recursos del sistema.</em> Si tienes un programa que necesita dos impresoras diferentes, según el tipo de documento, con una aplicación web la hemos liado. No se puede, tenemos que estar cambiando de impresora. Es un ejemplo, pero es la realidad, el acceso a los recursos locales es muy limitado.</p>
<p><em>6. El browser se muere&#8230;. </em>Cuando mezclamos una aplicación web en el mismo browser, con el facebook, el último video de youtube, radio online, etc.. llega un momento en que se muere y crash&#8230; al final me he tenido que instalar 2 browsers, una para aplicaciones y otro que utilizo para cosas que pueden hacer el browser morir. Ya sé que es culpa del browser, pero&#8230;</p>
<p><em>7. AJAX.</em> Es bueno, es muy bueno, siempre que se utilice bien, pero utilizarlo bien, tiene un coste altísimo, y pocas personas son capaces de hacer aplicaciones COMPATIBLES en AJAX que funcionen bien.</p>
<p><em>8. Compatibilidad. </em>Magento es uno de los sistemas de comercio electrónico de nueva generación más famosos, pues bien, no me funciona en mi browser, es incompatible.</p>
<p><em>9. Favoritos e Historial.</em> No hay cosa más peligrosa que un usuario acceda a una página directamente de una aplicación, sin pasar por los pasos necesarios. He visto usuarios que se guardaban en el favorito patallas que requerían pasar por un paso previo, y al acceder directamente, montaba unos líos increíbles.</p>
<p><em>10. Ancho de Banda.</em> Si, si, ancho de bando. Una aplicación web tiene que transmitir, la pantalla, las librerías de AJAX, la hoja de estilo, las imágenes, y los datos!!! mientras que una aplicación de escritorio, sólo transmite los datos.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.demartinacode.com/archives/60/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Técnicas para mejorar rendimiento</title>
		<link>http://www.demartinacode.com/archives/56</link>
		<comments>http://www.demartinacode.com/archives/56#comments</comments>
		<pubDate>Fri, 05 Jun 2009 07:56:04 +0000</pubDate>
		<dc:creator>jmacias</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[RENDIMIENTO]]></category>

		<guid isPermaLink="false">http://www.demartina.com/code/?p=56</guid>
		<description><![CDATA[Existe mucha literatura sobre como mejorar el rendimiento de las aplicaciones, pero a menudo nos olvidamos de ellas, recopilamos aquí, las técnicas más usadas en aplicaciones de escritorio:
1. Cache, cache y mas cache
Es totalmente innecesario acceder a los mismos datos en la base de datos una y otra vez, es mucho mejor, guardar estos datos [...]]]></description>
			<content:encoded><![CDATA[<p>Existe mucha literatura sobre como mejorar el rendimiento de las aplicaciones, pero a menudo nos olvidamos de ellas, recopilamos aquí, las técnicas más usadas en aplicaciones de escritorio:</p>
<p><strong>1. Cache, cache y mas cache</strong></p>
<p>Es totalmente innecesario acceder a los mismos datos en la base de datos una y otra vez, es mucho mejor, guardar estos datos en memoria o en disco, y utilizarlos en las sucesivas llamadas.</p>
<p>Además de este tipo de datos, están los parámetros, las preferencias de usuarios, etc&#8230;</p>
<p>El uso de cache, mejora radicalmente la velocidad de una aplicación.</p>
<p><strong>2. Arranque Rápido.</strong></p>
<p>Esta es mi técnica preferida, ideal para redes lentas. No es fácil de implementar y requiere un poco de lógica. Se recoge estadística de las tablas y recursos más usados por la aplicación cuando arranca, por ejemplo, podemos tener una aplicación que normalmente abre un formulario y que tiene una lista desplegable con provincias.</p>
<p>Basándonos en las estadísticas, hacemos que arranque en paralelo y proceso que precarge los datos más usado, de forma que cuando el usuario acceda, no tiene que esperar que lleguen los datos.</p>
<p><strong>3. Optimización de Base de Datos</strong></p>
<p>No voy a detallar todas las técnicas, pues hay muchas, pero las principales son optimización de índices, minimizar los accesos a bases de datos, desnormalización cuando es necesario, estudio de planes de ejecución de consultas, etc..</p>
<p><strong>4. Escalabilidad</strong></p>
<p>Quizás, la parte más complicada a la hora de desarrollar una aplicación. Lo primero es ¿como sabemos si es escalable? Existen herramientas que simulan la carga de trabajo de miles de usuairos, es un buen punto de partida.</p>
<p>Pero ¿como lo hacemos más escalable? Existen muchas técnicas, pero la más sencilla y útil es diseñar los sistemas para que se puedan ejecutar en paralelo, no diseñar un proceso central que lo hace todo en el servidor, es mejor diseñar, pequeños procesos de trabajo que se pueden ejecutar en paralelo.</p>
<p>Ahora estamos probando la ejecución distribuida de los procesos del servidor, de forma, que todos los ordenadores de la oficina, participan en el proceso global, aportanto parte de su CPU.</p>
<p><strong>5. Sensación y percepción</strong></p>
<p>Un día llegó a mis manos un documento de Microsoft muy curioso, sobre la percepción que tiene el usuario de la velocidad de un programa, y me pareció muy interesante. La típica barra de progreso que tenía Windows al principio al iniciar, fue sustituida por una barra que se movía a toda prisa y daba varias vueltas. La percepción del usuario es importante, y tenemos que cuidar todos los tiempos muertos de la aplicación, utilizar iconos con reloj, animaciones, etc&#8230;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.demartinacode.com/archives/56/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
