<?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>Códice &#187; programación</title>
	<atom:link href="http://codice.aletia8.com/category/programacion/feed/" rel="self" type="application/rss+xml" />
	<link>http://codice.aletia8.com</link>
	<description>Desarrollo de código, frameworks, cms, entornos de programación y lenguajes</description>
	<lastBuildDate>Wed, 24 Jun 2009 17:49:14 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Técnicas para mejorar rendimiento</title>
		<link>http://codice.aletia8.com/2009/06/tecnicas-para-mejorar-rendimiento/</link>
		<comments>http://codice.aletia8.com/2009/06/tecnicas-para-mejorar-rendimiento/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 17:49:14 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[Rendimiento]]></category>

		<guid isPermaLink="false">http://codice.aletia8.com/?p=48</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://codice.aletia8.com/2009/06/tecnicas-para-mejorar-rendimiento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Gears, reinventando la rueda</title>
		<link>http://codice.aletia8.com/2008/09/reinventando-la-rueda/</link>
		<comments>http://codice.aletia8.com/2008/09/reinventando-la-rueda/#comments</comments>
		<pubDate>Tue, 23 Sep 2008 07:11:11 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[applets]]></category>
		<category><![CDATA[dhtml]]></category>
		<category><![CDATA[gears]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://codice.aletia8.com/?p=33</guid>
		<description><![CDATA[Para muchos, tecnologías como AJAX, Google Gears, etc&#8230; han supuesto una gran innovación que nos ayudan en el camino hacia la tan nombrada WEB2.0. Para mi, sin embargo, todas estas tecnologías son una reinvención de la rueda que ya existía.
Hagamos un poco de historia&#8230;.. Java aparece en 1995, aportando &#8220;Applets&#8221; a las páginas Web, de [...]]]></description>
			<content:encoded><![CDATA[<p>Para muchos, tecnologías como AJAX, Google Gears, etc&#8230; han supuesto una gran innovación que nos ayudan en el camino hacia la tan nombrada WEB2.0. Para mi, sin embargo, todas estas tecnologías son una reinvención de la rueda que ya existía.</p>
<p>Hagamos un poco de historia&#8230;.. Java aparece en 1995, aportando &#8220;Applets&#8221; a las páginas Web, de forma que era posible construir aplicaciones complejas dentro de un explorador web. Esto supuso toda una revolución para muchos desarrolladores que encontraron en esta tecnología una solución a sus problemas, los applets mas famosos fueron los menús, tratamiento de imágenes, calculadoras, visores, etc&#8230; pero no llegaron a extenderse para el desarrollo de grandes aplicaciones.</p>
<p>Debido al enfrentamiento legal que tuvieron Microsoft y Sun con respecto a la máquina virtual, Microsoft ideo una alternativa a los Applets, y a finales de los 90 sacó al mercado DHTML y un motor de scripintg muy avanzado que permitía código en JavaScript y VisualBasic Script. Y como ejemplo de esta tecnología, el equipo de desarrollo preparó las mismas demos que Sun publico para explicar las bondades de los Applets, hechas todas con DHTML.</p>
<p>Los Applets poco a poco fueron desapareciendo, sobre todo cuando Netscape desapareció en la lucha con Internet Explorer.</p>
<p>En este punto, Microsoft apostó por su versión de los Applets, los controles ActiveX, los cuales tendrían que retirar años más tardes debido a una patente.</p>
<p>Pero fue en el año 99 cuando descubrí Microsoft Remote Scripting, esta tecnología permitía desde una página web llamar a un procedimiento remoto del servidor, como ejemplo, una lista desplegable de provincia que al cambiarla se recargaba la lista de municipios, ¿os suena?¿AJAX?</p>
<p>Remote Scripting fue realmente complicado de programar, sobre todo por la carencia de herramientas efectivas para la depuración.</p>
<p>Con la salida al mercado de .NET, Microsoft nos dá una sorpresa que nadie se esperaba: Smart Clients, bajo este nombre se esconde una tecnología que permite colocar un ejecutable en una página web, y que se ejecute desde el explorador sin problemas, descargando las DLLs que sean necesarias y comunicandose con el servidor para acceder a los datos.</p>
<p>Por otro lado, Sun no tardó en responder a esta tecnología, llamandola Java Web Star.</p>
<p><em><strong>¿Pero a donde vamos?</strong></em></p>
<p>El problema principal es que las aplicaciones web no son lo suficientemente buenas, ni ofrecen la misma usabilidad y funcionalidad que una aplicación cliente. Y que las aplicaciones clientes no son tan fáciles de instalar y tan &#8220;bonitas&#8221; como una aplicación web.</p>
<p>En este sentido hay dos tendencias, llevar las aplicaciones de escritorio a web (Thin Client) o mejorar las capacidades de los browsers de internet, como AJAX, Google Gears, Adobe Flex, etc&#8230;</p>
<p>Es decir, llevamos más de 10 años con lo mismo, sacando tecnología sobre tecnología, para lo mismo, y cuando una de ellas parece consolidarse, aparece otra alternativa mejor que descarta las anteriores.</p>
<p>Aunque esto parezca bueno, pues la innovación es buena, en mi opinión, es una lucha de poderes entre Sun, Microsoft y ahora Google, que reinventan la rueda a su manera, involucrando a miles de empresas y programadores, con cambios constantes.</p>
]]></content:encoded>
			<wfw:commentRss>http://codice.aletia8.com/2008/09/reinventando-la-rueda/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Recursos en inglés para programar en PHP</title>
		<link>http://codice.aletia8.com/2008/06/recursos-en-ingles-para-programar-en-php/</link>
		<comments>http://codice.aletia8.com/2008/06/recursos-en-ingles-para-programar-en-php/#comments</comments>
		<pubDate>Mon, 30 Jun 2008 14:45:06 +0000</pubDate>
		<dc:creator>juananruiz</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[inglés]]></category>
		<category><![CDATA[recursos]]></category>

		<guid isPermaLink="false">http://codice.aletia8.com/?p=24</guid>
		<description><![CDATA[Obtenido de WikiBooks: PHP Programming

Hudzilla.org &#8211; Paul Hudson&#8217;s excellent beginner-expert guide to PHP.
W3Schools &#8211; Quick start with PHP for beginners.
The Oracle+PHP Cookbook &#8211; Explore a broad range of HowTos for leveraging Oracle&#8217;s PL/SQL APIs in PHP applications.
PHP.net &#8211; The PHP website. This is where you go to both get PHP and to read the documentation.
The [...]]]></description>
			<content:encoded><![CDATA[<p>Obtenido de <a href="http://http//en.wikibooks.org/wiki/PHP_Programming">WikiBooks: PHP Programming</a></p>
<ul>
<li><a class="external autonumber" title="http://hudzilla.org" rel="nofollow" href="http://hudzilla.org/">Hudzilla.org</a> &#8211; Paul Hudson&#8217;s excellent beginner-expert guide to PHP.</li>
<li><a class="external text" title="http://www.w3schools.com/php/default.asp" rel="nofollow" href="http://www.w3schools.com/php/default.asp">W3Schools</a> &#8211; Quick start with PHP for beginners.</li>
<li><a class="external text" title="http://www.oracle.com/technology/pub/articles/oracle_php_cookbook/index.html" rel="nofollow" href="http://www.oracle.com/technology/pub/articles/oracle_php_cookbook/index.html">The Oracle+PHP Cookbook</a> &#8211; Explore a broad range of HowTos for leveraging Oracle&#8217;s PL/SQL APIs in PHP applications.</li>
<li><a class="external text" title="http://php.net/" rel="nofollow" href="http://php.net/">PHP.net</a> &#8211; The PHP website. This is where you go to both <a class="external text" title="http://php.net/downloads.php" rel="nofollow" href="http://php.net/downloads.php">get PHP</a> and to <a class="external text" title="http://php.net/docs.php" rel="nofollow" href="http://php.net/docs.php">read the documentation</a>.</li>
<li><a class="external text" title="http://www.php.net/manual/en/index.php" rel="nofollow" href="http://www.php.net/manual/en/index.php">The PHP Manual</a> &#8211; Extensive information about PHP.</li>
<li><a class="external text" title="http://www.devnetwork.net/" rel="nofollow" href="http://www.devnetwork.net/">PHP Developers Network</a> &#8211; Network of PHP-resource driven websites.</li>
<li><a class="external text" title="http://www.php-editors.com/chapters/" rel="nofollow" href="http://www.php-editors.com/chapters/">PHP Book Chapters</a> &#8211; Sample PHP books chapters, read online.</li>
<li><a class="external text" title="http://www.computer-books.us/php.php" rel="nofollow" href="http://www.computer-books.us/php.php">Computer-Books.us</a> &#8211; A collection of PHP books available for free download.</li>
<li><a class="external text" title="http://phpfreaks.com/" rel="nofollow" href="http://phpfreaks.com/">PHPFreaks.com</a> &#8211; Learn PHP, PHP Tutorials / Howto, code examples, PHP scripts.</li>
<li><a class="external text" title="http://www.php-help.net/" rel="nofollow" href="http://www.php-help.net/">PHP-Help.net: PHP codes, PHP scripts, PHP examples</a> &#8211; PHP help, PHP codes examples, PHP scripts.</li>
<li><a class="external text" title="http://www.php.net/docs.php" rel="nofollow" href="http://www.php.net/docs.php">PHP Documentation</a> &#8211; Searchable documentation with user comments.</li>
<li><a class="external text" title="http://www.packtpub.com/books/topic/2" rel="nofollow" href="http://www.packtpub.com/books/topic/2">PHP Books</a> &#8211; A large collection of PHP related books.</li>
<li><a class="external text" title="http://www.phpsec.org/" rel="nofollow" href="http://www.phpsec.org/">PHPSC</a> &#8211; PHP Security Consortium. Guides, etc. on security in PHP code.</li>
<li><a class="external text" title="http://www.programmabilities.com/" rel="nofollow" href="http://www.programmabilities.com/">Programmabilities.com</a> &#8211; PHP scripts and tutorials.</li>
<li><a class="external text" title="http://www.php-resources.org/" rel="nofollow" href="http://www.php-resources.org/">PHP-Resources.org</a> &#8211; Tutorials, docs, newgroups and scripts.</li>
<li><a class="external text" title="http://loadaveragezero.com/app/drx/Programming/Languages/PHP" rel="nofollow" href="http://loadaveragezero.com/app/drx/Programming/Languages/PHP">PHP Resources</a> &#8211; Resources and techniques.</li>
<li><a class="external text" title="http://php.resourceindex.com/" rel="nofollow" href="http://php.resourceindex.com/">PHP Resource Index</a> &#8211; Another nice PHP portals for various PHP resources.</li>
<li><a class="external text" title="http://www.phpbuilder.com/" rel="nofollow" href="http://www.phpbuilder.com/">PHP Builder</a> &#8211; A website for PHP news, articles, code library, forums, etc.</li>
<li><a class="external text" title="http://www.phppatterns.com/" rel="nofollow" href="http://www.phppatterns.com/">PHPPatterns</a> &#8211; Raising awareness and bringing PHP to the Enterprise Creating understanding of PHP&#8217;s Advanced Capabilities.</li>
<li><a class="external text" title="http://www.goodphptutorials.com" rel="nofollow" href="http://www.goodphptutorials.com/">Good PHP Tutorials</a> &#8211; A categorized collection of PHP tutorials.</li>
<li><a class="external text" title="http://mojavi.org" rel="nofollow" href="http://mojavi.org/">Mojavi</a> &#8211; One of the most popular MVC framework of PHP.</li>
<li>PHP Web Application Component Toolkit <a class="external free" title="http://phpwact.org/" rel="nofollow" href="http://phpwact.org/">http://phpwact.org/</a> &#8211; It&#8217;s a wiki.</li>
<li><a class="external text" title="http://www.hotscripts.com/php/" rel="nofollow" href="http://www.hotscripts.com/php/">Hotscripts.com :: PHP</a> &#8211; A very good PHP portal.</li>
<li><a class="external text" title="http://www.php-mysql-tutorial.com/" rel="nofollow" href="http://www.php-mysql-tutorial.com/">PHP MySQL Tutorial</a> &#8211; Very good beginners tutorial.</li>
<li><a class="external text" title="http://notepad-plus.sourceforge.net/" rel="nofollow" href="http://notepad-plus.sourceforge.net/">Notepad++</a> &#8211; Very simple yet effective source code editor. Supports highlighting and folding.</li>
<li><a class="external text" title="http://www.evilwalrus.org" rel="nofollow" href="http://www.evilwalrus.org/">EvilWalrus.org</a> &#8211; Hundreds of user-contributed scripts and articles; tagged and searchable.</li>
<li><a class="external text" title="http://nututorials.com/tutorials/PHP" rel="nofollow" href="http://nututorials.com/tutorials/PHP">NuTutorials PHP Section</a> &#8211; Categorized tutorials (~500) for PHP.</li>
<li><a class="external text" title="http://www.beginnersphp.co.uk" rel="nofollow" href="http://www.beginnersphp.co.uk/">Beginners PHP</a> &#8211; Tutorials and resources.</li>
<li><a class="external text" title="http://www.symfony-project.com" rel="nofollow" href="http://www.symfony-project.com/">Symfony</a> &#8211; Advanced <a class="extiw" title="w:Model-View-Controller" href="http://en.wikipedia.org/wiki/Model-View-Controller">MVC</a> framework for PHP.</li>
<li><a class="external text" title="http://www.selfphp.de" rel="nofollow" href="http://www.selfphp.de/">SELFPHP</a> &#8211; A very good PHP portal. Searchable documentation with examples, PHP Code Book, Code library, forums and Tutorials.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://codice.aletia8.com/2008/06/recursos-en-ingles-para-programar-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Preparados para ir de &#8220;Safari&#8221;?</title>
		<link>http://codice.aletia8.com/2008/03/preparados-para-ir-de-safari/</link>
		<comments>http://codice.aletia8.com/2008/03/preparados-para-ir-de-safari/#comments</comments>
		<pubDate>Mon, 24 Mar 2008 15:09:26 +0000</pubDate>
		<dc:creator>Juan</dc:creator>
				<category><![CDATA[navegadores]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[estándar web]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[safari]]></category>

		<guid isPermaLink="false">http://codice.aletia8.com/2008/03/%c2%bfpreparados-para-ir-de-safari/</guid>
		<description><![CDATA[Recuerdo aquellos tiempos por el año 92, cuando al desarrollar una web, sólo tenías que preocuparte de que se mostrara bien en Netscape. Años más tarde, Microsoft compra Mosaic y lo llama Internet Explorer y en poco tiempo obtiene una cuota de mercado del 95%, de forma que los desarrolladores, pasaron a preocuparse sólo por [...]]]></description>
			<content:encoded><![CDATA[<p><img align="left" />Recuerdo aquellos tiempos por el año 92, cuando al desarrollar una web, sólo tenías que preocuparte de que se mostrara bien en Netscape. Años más tarde, Microsoft compra Mosaic y lo llama Internet Explorer y en poco tiempo obtiene una cuota de mercado del 95%, de forma que los desarrolladores, pasaron a preocuparse sólo por el IE.</p>
<p>El mercado actual es totalmente diferente, Firefox ha recuperado la cuota perdida por Netscape, y entran en juego más exploradores como el Opera. Los desarrolladores se ven forzados a hacer sus páginas más compatibles, al menos para Firefox e Internet Explorer.</p>
<p><a href="http://codice.aletia8.com/wp-content/uploads/2008/03/safari.jpeg" title="Icono de Safari"><img src="http://codice.aletia8.com/wp-content/uploads/2008/03/safari.jpeg" class="left" alt="Icono de Safari" /></a>Cuando todos creíamos que Apple se había rendido a Firefox y Camino (también basado en el mismo motor de Firefox), nos encontramos con una sorpresa, una apuesta muy fuerte de Apple por extender Safari, siguiendo un plan perfectamente trazado:</p>
<ol>
<li>Lo primero ha sido, <strong>quitarse la etiqueta de incompatible</strong>, actualmente Safari 3.1 es el navegador <a href="http://www.anomalousanomaly.com/2008/03/06/acid-3/">más compatible que existe con los estándares actuales</a>.</li>
<li>Han convertido a Safari en <strong>multiplataforma</strong>, con versiones para Windows, OSX, iPhone y con su motor webkit, compatible con Linux.</li>
<li>Han creado una <strong>política de distribución perfecta</strong>: todos los iPhone y todos los iPod, tienen instalados Safari (y muy pronto Apple TV). Todos los usuarios en Windows con iTunes o QuickTime, se han encontrado al actualizar la ultima versión con un icono de Safari 3.1.</li>
<li>¿Cómo destacar con respecto al resto de navegadores? En lugar de desarrollar navegadores cada vez más grandes, con más características (que nadie utiliza), Apple se ha dedicado a <strong>mejorar la velocidad</strong>, teniendo un rendimiento muy superior a sus competidores.</li>
<li><strong>Apoyo a los desarrolladores</strong>. Por un lado, Safari está basado en el navegador Konqueror de Linux, el motor sigue siendo Open Source.  Por otro lado, encontramos en la versión 3.1 un menú &#8220;Desarrollo&#8221;, creado para ayudar a los desarrolladores.</li>
</ol>
<h3>¿Es hora de ir de &#8220;Safari&#8221;?</h3>
<p>Pues la verdad es que aún es pronto, que Safari sea el navegador más compatible del mercado, no significa que funcionen todas las páginas web. Hay que tener en cuenta, que el HTML es un lenguaje que permite errores, trucos, uso de características propietarias del navegador, etc.</p>
<p>No obstante, como desarrolladores, debemos ir empezando a probar nuestras páginas con Safari.</p>
<h3>¿Por qué utilizar Safari?</h3>
<p>En los próximos años, el panorama de los navegadores cambiará radicalmente:</p>
<ul>
<li>Cada vez hay más dispositivos con acceso a Internet; móviles, PDA, Nintendo Wii, Playstation 3, Nintendo DS.</li>
<li>Linux y Apple le van ganando terreno a Microsoft.</li>
<li>Google apuesta por contenido estándar, penalizando a las web que utilizan contenido no compatible.</li>
<li>La única solución para hacer páginas compatibles es seguir un estándar, de esta forma nuestro contenido se verá en todos los medios.</li>
</ul>
<blockquote><p>Utilizando Safari desde ahora, conseguiremos que nuestro contenido sea accesible en cualquier navegador.</p></blockquote>
<h3>Más información</h3>
<ul>
<li><a href="http://www.apple.com/safari/" target="_blank">http://www.apple.com/safari/</a></li>
<li><a href="http://www.anomalousanomaly.com/2008/03/06/acid-3/" target="_blank">http://www.anomalousanomaly.com/2008/03/06/acid-3/</a></li>
<li><a href="http://www.w3schools.com/browsers/browsers_stats.asp" target="_blank">http://www.w3schools.com/browsers/browsers_stats.asp</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://codice.aletia8.com/2008/03/preparados-para-ir-de-safari/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Código samurai: como programar mejor</title>
		<link>http://codice.aletia8.com/2008/03/codigo-samurai-como-programar-mejor/</link>
		<comments>http://codice.aletia8.com/2008/03/codigo-samurai-como-programar-mejor/#comments</comments>
		<pubDate>Sat, 15 Mar 2008 12:25:19 +0000</pubDate>
		<dc:creator>juananruiz</dc:creator>
				<category><![CDATA[programación]]></category>
		<category><![CDATA[código]]></category>
		<category><![CDATA[depurar]]></category>
		<category><![CDATA[eficiencia]]></category>

		<guid isPermaLink="false">http://codice.aletia8.com/?p=5</guid>
		<description><![CDATA[Este artículo es un resumen de los consejos ofrecidos en el artículo Free Programming Tips are Worth Every Penny (Consejos gratuitos para programadores que valen su peso en oro) por Will Shipley.
Sigue el Código Samurai
Los antiguos samurais, cuando luchaban, se pasaban horas observándose mutuamente hasta que repentinamente uno de ellos lanzaba un sólo golpe y [...]]]></description>
			<content:encoded><![CDATA[<p>Este artículo es un resumen de los consejos ofrecidos en el artículo <a href="http://wilshipley.com/blog/2005/02/free-programming-tips-are-worth-every.html">Free Programming Tips are Worth Every Penny</a> (Consejos gratuitos para programadores que valen su peso en oro) por Will Shipley.<a title="Dibujo de samurai. Autor: Eugene Collache" href="http://zumodewiki.wordpress.com/files/2007/08/samurai1.jpg"><img style="padding-right: 10px" src="http://zumodewiki.wordpress.com/files/2007/08/samurai1.jpg" border="0" alt="Dibujo de samurai. Autor: Eugene Collache" align="left" /></a></p>
<p><strong>Sigue el Código Samurai</strong></p>
<p>Los antiguos samurais, cuando luchaban, se pasaban horas observándose mutuamente hasta que repentinamente uno de ellos lanzaba un sólo golpe y derrotaba al contrincante.</p>
<p>Cuando vayas a programar, antes de nada, <strong>piensa</strong>, luego piensa un poco más, hasta que tengas una idea de conjunto de todo el proyecto. Luego piensa en un problema concreto con el que vayas a comenzar a programar, piensa de nuevo en el conjunto y en como encaja esta pieza en él. Entonces comienza a escribir código. No escribas una sola línea de código hasta que no tengas claro que es lo que vas a hacer.</p>
<p>Si eres de los que necesitan escribir para pensar: escribe en una carpeta aparte, crea tantas nuevas carpetas como bocetos necesites y cuando ya tengas el dibujo completo entonces escribe en la carpeta o proyecto definitivo; reutilizando los fragmentos de código que son de calidad y reescribiendo de nuevo lo que haya salido emborronado.</p>
<p>Escribe todo el código &#8220;en limpio&#8221; la primera vez que lo escribas. No hagas una chapuza pensando que lo arreglarás más tarde, de hecho nunca lo arreglarás. Utiliza clases para todos. Usa tipos enumerados.</p>
<p>Escribe código robusto y &#8220;a prueba de balas&#8221; desde el principio. Piensa en todo lo que podría causar un fallo y toma medidas preventivas como si el fallo ya hubiera ocurrido.</p>
<p>Cada vez que retoques tu código para añadir funcionalidades o corregir un fallo aprovecha para hacer limpieza. Haz limpieza todo el rato. Pasa el paño cada vez que veas una mota de polvo afeando tu código.</p>
<p>Menos código <span style="text-decoration: line-through;">casi</span> siempre es mejor. Mejor para depurar, mejor para que lo entiendan otro programadores o tu mismo en el futuro, menos código son menos fallos. No añadas funciones adicionales a una clase pensando que las necesitarás en el futuro. Escribe sólo lo que necesites ahora. Cuando necesites contemplar nuevos casos escribe una función más genérica, que admita parámetros, pero no lo hagas hasta que no estés usando esa función en dos o más lugares de tu aplicación.</p>
<p>No te obsesiones con la velocidad y la eficiencia de tu código al principio. Tu tiempo de programador es caro, el hardware es rápido y barato. Cuando tu código funcione y esté depurado podrás hacer test de rendimiento y encontrar los cuellos de botella que merece la pena optimizar.</p>
]]></content:encoded>
			<wfw:commentRss>http://codice.aletia8.com/2008/03/codigo-samurai-como-programar-mejor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
