<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Mi blog técnico</title>
	<atom:link href="http://phedetech.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://phedetech.wordpress.com</link>
	<description>Columna técnica y algunos artículos de mi autoría</description>
	<lastBuildDate>Sun, 26 Dec 2010 23:34:48 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='phedetech.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Mi blog técnico</title>
		<link>http://phedetech.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://phedetech.wordpress.com/osd.xml" title="Mi blog técnico" />
	<atom:link rel='hub' href='http://phedetech.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Javascript y los enlaces</title>
		<link>http://phedetech.wordpress.com/2006/07/24/javascript-y-los-enlaces/</link>
		<comments>http://phedetech.wordpress.com/2006/07/24/javascript-y-los-enlaces/#comments</comments>
		<pubDate>Mon, 24 Jul 2006 08:20:01 +0000</pubDate>
		<dc:creator>Fede</dc:creator>
				<category><![CDATA[Código HTML]]></category>

		<guid isPermaLink="false">https://phedetech.wordpress.com/2006/07/24/javascript-y-los-enlaces/</guid>
		<description><![CDATA[Desde hace algún tiempo he notado que la gente tiene cierta manía a escribir los enlaces HTML utilizando el atributo onClick de la etiqueta Anchor (&#60;A&#62;) en lugar de utilizar el atributo href. No sé de dónde ha salido esa técnica, incorrecta en la mayoría de los casos, que suele producir efectos no deseados. Es [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=9&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Desde hace algún tiempo he notado que la gente tiene cierta manía a escribir los enlaces HTML utilizando el atributo <i>onClick</i> de la etiqueta Anchor (<i>&lt;A&gt;</i>) en lugar de utilizar el atributo <i>href</i>. No sé de dónde ha salido esa técnica, incorrecta en la mayoría de los casos, que suele producir efectos no deseados. Es lo malo de que muchas aplicaciones Web estén desarrolladas por auténticos incompetentes.</p>
<p>El otro día un amigo me pidió ayuda para revisar un problema que tenía que resolver, y justamente el problema era causado por un mal uso de los enlaces HTML. Lo primero que estaba mal es que el enlace no tenía valor en el <i>href</i>, sino que utilizaba directamente el <i>onClick</i>. Dicho <i>onClick</i> ejecutaba una función Javascript que en lugar de devolver la URL a la que dirigirse, hacía <i>window.location=URL</i>. Me entra urticaria de sólo recordar ese código abominable.</p>
<p>El efecto era que se lanzaban 2 <i>threads</i> al servidor y uno de ellos cortaba la ejecución del otro. Es decir, igual que ocurriría si pongo una URL en el navegador, le doy a <i>enter</i> y mientras está accediendo al servidor Web, pongo otra y le doy a <i>enter</i>. La primera conexión se cancela. Esto puede tener varios efectos no deseados. En general no pasa nada malo, pero a veces, ocurre lo que a mi amigo: el URL malo cancelaba al URL bueno.</p>
<p>La cuestión es que el problema de todo esto surge por una seria ignorancia y absoluta desidia del programador que escribió dicho código en primer lugar. Por ello, y para que no le pase lo mismo a otras personas, aquí pongo un enlace a un blog donde se explica muy bien cómo funciona la etiqueta <i>&lt;A&gt;</i> y sus efectos al usar <i>href </i>y <i>onClick</i>.</p>
<p>A modo de resumen, transcribo la tabla final donde se enumeran los casos posibles.</p>
<table border="1">
<tr>
<td>&lt;a href=&#8221;#&#8221;&gt;click&lt;/a&gt;</td>
<td>No hace nada, pero desplaza hacia arriba</td>
</tr>
<tr>
<td>&lt;a href=&#8221;javascript:;&#8221;&gt;click&lt;/a&gt;</td>
<td>No hace nada y no desplaza</td>
</tr>
<tr>
<td>&lt;a href=&#8221;javascript:f()&#8221;&gt;click&lt;/a&gt;</td>
<td>Ejecuta la funcion f() y sustituye el contenido de la página actual con resultado de esta función (excepto si f() no devuelve nada)</td>
</tr>
<tr>
<td>&lt;a href=&#8221;javascript:void(f())&#8221;&gt;click&lt;/a&gt;</td>
<td>Ejecuta la funcion f() pero no hace nada más, aunque f() devuelva algun valor.</td>
</tr>
<tr>
<td>&lt;a href=&#8221;javascript:void(a())&#8221; onclick=&#8221;b()&#8221;&gt;click&lt;/a&gt;</td>
<td>Ejecuta primero la funcion b() y después a() pero no hace nada más</td>
</tr>
<tr>
<td>&lt;a href=&#8221;javascript:void(a())&#8221; onclick=&#8221;return c()&#8221;&gt;click&lt;/a&gt;</td>
<td>Ejecuta primero la funcion c() y, si esta devuelve true entonces ejecuta la función a(). Después no hace nada más</td>
</tr>
<tr>
<td>&lt;a href=&#8221;javascript:a()&#8221; onclick=&#8221;return c()&#8221;&gt;click&lt;/a&gt;</td>
<td>Ejecuta primero la funcion c() y, si esta devuelve true entonces ejecuta la función f() y sustituye el contenido de la página actual con resultado de la función.</td>
</tr>
</table>
<p>Más información <a href="http://yoprogramador.vampisol.com/index.php?title=anchor_y_javascript&amp;more=1&amp;c=1&amp;tb=1&amp;pb=1" title="Yo, Programador" target="_blank">aquí</a>.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/phedetech.wordpress.com/9/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/phedetech.wordpress.com/9/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phedetech.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phedetech.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phedetech.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phedetech.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phedetech.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phedetech.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phedetech.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phedetech.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phedetech.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phedetech.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phedetech.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phedetech.wordpress.com/9/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phedetech.wordpress.com/9/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phedetech.wordpress.com/9/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=9&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phedetech.wordpress.com/2006/07/24/javascript-y-los-enlaces/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05738f009a772bc1ebf18844422f230a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fede</media:title>
		</media:content>
	</item>
		<item>
		<title>Ajax: una definición sencilla</title>
		<link>http://phedetech.wordpress.com/2006/05/24/ajax-una-definicion-sencilla/</link>
		<comments>http://phedetech.wordpress.com/2006/05/24/ajax-una-definicion-sencilla/#comments</comments>
		<pubDate>Wed, 24 May 2006 12:14:36 +0000</pubDate>
		<dc:creator>Fede</dc:creator>
				<category><![CDATA[Columna]]></category>

		<guid isPermaLink="false">https://phedetech.wordpress.com/2006/05/24/ajax-una-definicion-sencilla/</guid>
		<description><![CDATA[Llevo tiempo escuchando la palabra &#34;Ajax&#34; en infinidad de conversaciones y en m&#250;ltiples p&#225;ginas t&#233;cnicas, pero no es f&#225;cil encontrar una buena definici&#243;n en castellano de qu&#233; es, para qu&#233; sirve y cu&#225;ndo usarlo. Lo primero que hay que tener claro es que el t&#233;rmino Ajax se est&#225; convirtiendo en una de esas palabras que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=7&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Llevo tiempo escuchando la palabra &quot;Ajax&quot; en infinidad de conversaciones y en m&uacute;ltiples p&aacute;ginas t&eacute;cnicas, pero no es f&aacute;cil encontrar una buena definici&oacute;n en castellano de qu&eacute; es, para qu&eacute; sirve y cu&aacute;ndo usarlo.</p>
<p>Lo primero que hay que tener claro es que el t&eacute;rmino <i>Ajax</i> se est&aacute; convirtiendo en una de esas palabras que <i>hay</i> que usar porque sino parece que no est&aacute;s a la moda. Grave error. La tecnolog&iacute;a no se lleva bien con las modas. Si es &uacute;til, se usa, sino no. Y recordemos que no hay una herramienta o tecnolog&iacute;a m&aacute;gica que lo resuelve todo.</p>
<p><b>&iquest;Qu&eacute; es Ajax?</b></p>
<p>Ajax es el nombre que recibe el proceso de utilizar un objeto <i>JavaScript</i> para intercambiar informaci&oacute;n en formato <i>XML</i> con el servidor sin tener que hacer <i>submit</i> de un formulario o poner una URL en el navegador: el famoso <b>XmlHttpRequest</b>. Eso es todo, no tiene m&aacute;s. B&aacute;sicamente, mediante programaci&oacute;n JavaScript se puede crear un objeto de tipo XmlHttpRequest que realice una petici&oacute;n a una URL determinada y encapsule el resultado en un arbol XML. <i>Nota:</i> en el caso de Internet Explorer, el objeto en cuesti&oacute;n se llama XMLHTTP.</p>
<p><b>&iquest;C&oacute;mo funciona?</b></p>
<p>Para poder utilizar esta t&eacute;cnica, es necesario contar con:</p>
<ul>
<li>Un navegador que soporte XMLHTTP o XmlHttpRequest.</li>
<li>Un servidor que sea capaz de responder peticiones HTTP en formato XML.</li>
</ul>
<p>En general, esta combinaci&oacute;n siempre est&aacute; disponible gracias a que los navegadores m&aacute;s importantes soportan esta tecnolog&iacute;a y los servidores HTTP suelen permitir cualquier tipo de lenguaje de la familia SML.</p>
<p><b>&iquest;C&oacute;mo lanzar una petici&oacute;n Ajax?</b></p>
<p>Para ejecutar una petici&oacute;n Ajax, hace falta crear el objeto <i>JavaScript</i> correspondiente:</p>
<pre>if (window.XMLHttpRequest) {
   req = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
   req = new
ActiveXObject(&quot;Microsoft.XMLHTTP&quot;);</pre>
<pre>}</pre>
<p>Este extracto de c&oacute;digo crear&aacute; el objeto que utilizaremos para lanzar las peticiones. Vale para todos los navegadores. Ahora habr&iacute;a que decirle qu&eacute; URL ejecutar y abrir la conexi&oacute;n:</p>
<pre>req.open(&quot;GET&quot;, url, true);</pre>
<p>El primer par&aacute;metro es el tipo de petici&oacute;n: GET &oacute; POST, el segundo par&aacute;metro es la URL y el tercer par&aacute;metro indica si debe ser una conexi&oacute;n as&iacute;ncrona (<i>true</i>) o s&iacute;ncrona (<i>false</i>). En Ajax, las conexiones son as&iacute;ncronas (la &quot;A&quot; de Ajax es &quot;Asynchronous&quot;). Cuidado al poner <i>false</i>, porque el navegador se quedar&aacute; bloqueado hasta que esta conexi&oacute;n finalice.</p>
<p>El pr&oacute;ximo paso es asignar un valor a la propiedad <i>onreadystatechange</i>. Esta propiedad registra una funci&oacute;n <i>Javascript </i>que se ejecutar&aacute; cuando la conexi&oacute;n finalice.</p>
<pre>req.onreadystatechange = processXMLResponse;</pre>
<p>Tambi&eacute;n se pueden establecer <i>cookies</i> f&aacute;cilmente:</p>
<pre>req.setRequestHeader(&quot;Cookie&quot;, &quot;someKey=true&quot;);</pre>
<p>Una vez que el objeto est&aacute; inicializado y listo para trabajar, lanzaremos la petici&oacute;n:</p>
<pre>req.send(null);</pre>
<p>El <i>null</i> vale para peticiones de tipo GET. En el caso de POST, se debe especificar los par&aacute;metros, por ejemplo:</p>
<p>req.setRequestHeader(&quot;Content-Type&quot;, &quot;application/x-www-form-urlencoded&quot;;<br />
req.send(&quot;name=scott&amp;email=stiger@foocorp.com&quot;);</p>
<p>Es aconsejable que la funci&oacute;n que procesa el XML resultante tenga un control m&iacute;nimo del resultado. El readystate 4 significa que la petici&oacute;n ha finalizado por completo y el status 200 es el OK del protocolo HTTP.</p>
<pre>function processXMLResponse() {
  if (req.readyState == 4) {
    if (req.status == 200) {
     // Process the XML response
    }
  }
}</pre>
<p>Para procesar la respuesta XML simplemente hay que utilizar las funciones de JavaScript DOM. Por ejemplo, para extraer el nombre del empleado del siguiente XML:</p>
<pre>&lt;employee&gt;
  Chris
&lt;/employee&gt;</pre>
<p>Se puede utilizar lo siguiente:</p>
<pre>var name = req.responseXML.getElementsByTagName(&quot;employee&quot;)[0];</pre>
<p>L&oacute;gicamente, lo normal es recorrer &aacute;rboles DOM un poco m&aacute;s complejos, utilizando por ejemplo bucles como el siguiente:</p>
<pre>for (i=0;i&lt;elements.length;i++) {
  for (j=0;j&lt;elements[i].childNodes.length;j++) {
    var ElementData = elements[i].childNodes[j].firstChild.nodeValue;
  }
}</pre>
<p>Y eso es todo. Espero que haya quedado claro c&oacute;mo funciona Ajax de forma sencilla. M&aacute;s adelante publicar&eacute; un ejemplo real de esta tecnolog&iacute;a.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/phedetech.wordpress.com/7/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/phedetech.wordpress.com/7/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phedetech.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phedetech.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phedetech.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phedetech.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phedetech.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phedetech.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phedetech.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phedetech.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phedetech.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phedetech.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phedetech.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phedetech.wordpress.com/7/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phedetech.wordpress.com/7/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phedetech.wordpress.com/7/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=7&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phedetech.wordpress.com/2006/05/24/ajax-una-definicion-sencilla/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05738f009a772bc1ebf18844422f230a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fede</media:title>
		</media:content>
	</item>
		<item>
		<title>Integración contínua</title>
		<link>http://phedetech.wordpress.com/2006/05/08/integracion-continua/</link>
		<comments>http://phedetech.wordpress.com/2006/05/08/integracion-continua/#comments</comments>
		<pubDate>Mon, 08 May 2006 16:25:15 +0000</pubDate>
		<dc:creator>Fede</dc:creator>
				<category><![CDATA[Columna]]></category>

		<guid isPermaLink="false">https://phedetech.wordpress.com/2006/05/08/integracion-continua/</guid>
		<description><![CDATA[Suelo leer los artículos que escribe Martin Fowler. La primera vez que leí algo suyo fue su libro sobre UML, que siempre recomiendo cuando me preguntan qué leer en esa materia. Me gustó su forma de explicar temas técnicos y su opinión pragmática sobre el mundo de la informática. En este caso voy a hacer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=6&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Suelo leer los artículos que escribe <a href="http://martinfowler.com/" title="martinfowler.com" target="_blank">Martin Fowler</a>. La primera vez que leí algo suyo fue su libro sobre <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://www.amazon.com/gp/product/0321193687/sr=8-1/qid=1147105162/ref=pd_bbs_1/104-8155883-6937563?%5Fencoding=UTF8" target="_blank" title="A Brief Guide to the Standard Object Modeling Language">UML</a>, que siempre recomiendo cuando me preguntan qué leer en esa materia. Me gustó su forma de explicar temas técnicos y su opinión pragmática sobre el mundo de la informática.</p>
<p>En este caso voy a hacer referencia a la última versión sobre el artículo de <a href="http://martinfowler.com/articles/continuousIntegration.html" title="Continuous Integration by Martin Fowler" target="_blank">Integración Contínua</a> que redactó hace ya bastante tiempo. Es un documento que reune una serie de buenas prácticas ya conocidas, pero que juntas forman la mencionada integración contínua. Yo empecé a tener contacto con éstas prácticas a finales del 99, cuando tuve oportunidad de trabajar en una verdadera factoría de software.</p>
<p>La esencia de esta práctica, una de las 12 originales del proceso Extreme Programming, es la de que cada desarrollador realice integraciones periódicas de su trabajo, al menos una vez al día, con un repositorio de código compartido. Como señala el autor del artículo, mucha gente cree que es un trabajo imposible de lograr y que realmente no aporta mucho: dos errores muy graves. Es muy sencillo de poner en marcha, con las herramientas de hoy en día es casi inmediato, y los beneficios son enormes. Detectar problemas de integración rápidamente ayuda a que el propio proceso de integración sea más rápido ya que los problemas no aparecen de a miles y que el código sea más estable. Como consecuencia de ello, también se acelera el proceso de pruebas.
</p>
<p>El artículo propone las siguientes prácticas como parte de la Integración Contínua:</p>
<ul>
<li>Mantener un único repositorio de código</li>
<li>Automatizar el proceso de compilación y generación de ejecutables</li>
<li>Integrar pruebas automatizadas dentro del proceso de compilación</li>
<li>Todos envían su código a diario</li>
<li>Con cada cambio de código, se debería lanzar el proceso de compilación en un entorno de integración</li>
<li>Mantener el proceso de compilación rápido</li>
<li>Realizar pruebas en un entorno igual al de producción</li>
<li>Obtener la última versión de los ejecutables debe ser fácil</li>
<li>Que todos puedan ver el estado actual del código</li>
<li>Automatizar el proceso de despliegue de las aplicaciones</li>
</ul>
<p>La lista de prácticas que propone el autor es muy completa, pero no es necesario ponerlas en marcha todas a la vez. Yo propongo plantear una introducción paulatina, dependiendo de la madurez del equipo de trabajo y de las prácticas que ya se estén aplicando, hasta completarlas todas.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/phedetech.wordpress.com/6/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/phedetech.wordpress.com/6/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phedetech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phedetech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phedetech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phedetech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phedetech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phedetech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phedetech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phedetech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phedetech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phedetech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phedetech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phedetech.wordpress.com/6/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phedetech.wordpress.com/6/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phedetech.wordpress.com/6/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=6&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phedetech.wordpress.com/2006/05/08/integracion-continua/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05738f009a772bc1ebf18844422f230a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fede</media:title>
		</media:content>
	</item>
		<item>
		<title>No más StringBuffer&#8230;</title>
		<link>http://phedetech.wordpress.com/2006/04/26/no-mas-stringbuffer/</link>
		<comments>http://phedetech.wordpress.com/2006/04/26/no-mas-stringbuffer/#comments</comments>
		<pubDate>Wed, 26 Apr 2006 14:29:22 +0000</pubDate>
		<dc:creator>Fede</dc:creator>
				<category><![CDATA[Código Java]]></category>

		<guid isPermaLink="false">https://phedetech.wordpress.com/2006/04/26/no-mas-stringbuffer/</guid>
		<description><![CDATA[En el JDK 1.4, el compilador transforma el operador binario + entre Strings a llamadas al m&#233;todo append de StringBuffer. Ya no es un problema concatenar muchos Strings con el + &#243; el +=. Ejemplo: Esto x = &#34;a&#34; + 4 + &#34;c&#34; se convierte en x = new StringBuffer().append(&#34;a&#34;).append(4).append(&#34;c&#34;).toString(). Se puede ver en el [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=5&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En el JDK 1.4, el compilador transforma el operador binario <i>+</i> entre <i>Strings</i> a llamadas al m&eacute;todo append de <i>StringBuffer</i>. Ya no es un problema concatenar muchos <i>Strings</i> con el <i>+</i> &oacute; el <i>+=</i>.</p>
<p>Ejemplo:</p>
<p>Esto <i><b>x = &quot;a&quot; + 4 + &quot;c&quot;</b></i> se convierte en <i><b>x = new StringBuffer().append(&quot;a&quot;).append(4).append(&quot;c&quot;).toString()</b></i>.</p>
<p>Se puede ver en el <a href="http://java.sun.com/j2se/1.4.2/docs/api/java/lang/StringBuffer.html" title="StringBuffer" target="_blank">API</a> de StringBuffer.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/phedetech.wordpress.com/5/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/phedetech.wordpress.com/5/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phedetech.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phedetech.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phedetech.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phedetech.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phedetech.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phedetech.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phedetech.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phedetech.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phedetech.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phedetech.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phedetech.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phedetech.wordpress.com/5/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phedetech.wordpress.com/5/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phedetech.wordpress.com/5/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=5&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phedetech.wordpress.com/2006/04/26/no-mas-stringbuffer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05738f009a772bc1ebf18844422f230a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fede</media:title>
		</media:content>
	</item>
		<item>
		<title>Cohesión y acoplamiento</title>
		<link>http://phedetech.wordpress.com/2006/04/24/cohesion-y-acoplamiento/</link>
		<comments>http://phedetech.wordpress.com/2006/04/24/cohesion-y-acoplamiento/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 15:26:07 +0000</pubDate>
		<dc:creator>Fede</dc:creator>
				<category><![CDATA[Columna]]></category>

		<guid isPermaLink="false">https://phedetech.wordpress.com/2006/04/24/cohesion-y-acoplamiento/</guid>
		<description><![CDATA[En la facultad curs&#233; una asignatura llamada &#34;T&#233;cnicas de Dise&#241;o&#34;. El equipo que llevaba la asignatura no era una gran autoridad en el tema del dise&#241;o de software, tem&#225;tica de la materia, y el responsable de la c&#225;tedra ten&#237;a muchos defectos, pero debo reconocer que era una persona sumamente convencida de sus ideas. Quiz&#225;s m&#225;s [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=4&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>En la facultad curs&eacute; una asignatura llamada &quot;T&eacute;cnicas de Dise&ntilde;o&quot;. El equipo que llevaba la asignatura no era una gran autoridad en el tema del dise&ntilde;o de software, tem&aacute;tica de la materia, y el responsable de la c&aacute;tedra ten&iacute;a muchos defectos, pero debo reconocer que era una persona sumamente convencida de sus ideas. Quiz&aacute;s m&aacute;s por amor propio que otra cosa. En cualquier caso, &eacute;l estaba convencido de que la cohesi&oacute;n y el acoplamiento eran dos conceptos fundamentales en el dise&ntilde;o de soluciones inform&aacute;ticas. Y la verdad es que tiene toda la raz&oacute;n.</p>
<p>Voy a intentar definir cohesi&oacute;n y acoplamiento, desde el punto de vista inform&aacute;tico. La cohesi&oacute;n es el grado de cercan&iacute;a entre dos o m&aacute;s elementos. Podr&iacute;amos decir que es un conjunto de caracter&iacute;sticas que los une y, por lo tanto, los agrupa bajo un mismo denominador, define su identidad. El acoplamiento, en cambio, mide el grado de dependencia entre dos o m&aacute;s elementos. Esto quiere decir que, seg&uacute;n su dependencia, estar&aacute;n m&aacute;s o menos acoplados. Mayor dependencia implica mayor acomplamiento.</p>
<p>El objetivo final del dise&ntilde;o de software (o soluciones inform&aacute;ticas) en materia de estos dos conceptos es: <i><b>Reducir al m&aacute;ximo el acoplamiento entre componentes y aumentar la cohesi&oacute;n interna de cada componente</b></i>.</p>
<p>&iquest;Qu&eacute; quiere decir reducir el acoplamiento? B&aacute;sicamente, lo m&aacute;s importante es saber definir las responsabilidades de cada componente para garantizar que la dependencia sea funcional o arquitect&oacute;nica, no de implementaci&oacute;n. Un ejemplo simple de acoplamiento es cuando un componente accede directamente a un dato que pertenece a otro componente. &iquest;Qu&eacute; ocurre en ese caso? Pues que el resultado del comportamiento del componente A depender&aacute; del valor del componente B, por lo tanto, est&aacute;n acoplados. Cabe destacar que el acoplamiento no es malo, ojo. Simplemente hay que saber eliminar el acoplamiento que no sea funcional o arquitect&oacute;nico. En el caso de acoplamiento funcional, est&aacute; bien que un componente de c&aacute;lculo de probabilidades dependa de un componente de c&aacute;lculo matem&aacute;tico b&aacute;sico, ya que es evidente que para calcular probabilidades ser&aacute; necesario aplicar f&oacute;rmulas matem&aacute;tics y resolver operaci&oacute;nes aritm&eacute;ticas. En el caso de acoplamiento arquitect&oacute;nico, se puede ver un ejemplo en el esquema MVC (modelo-vista-controlador). La capa del modelo realizar&aacute; cambios de acuerdo con los par&aacute;metros que recibe del controlador, por lo tanto hay cierta dependencia, pero s&oacute;lo como separaci&oacute;n de capas de una arquitectura claramente definida.</p>
<p>&iquest;Qu&eacute; ocurre en el caso de la cohesi&oacute;n? La cohesi&oacute;n de un componente mide la identidad de su comportamiento. El comportamiento de un componente se define mediante una serie de operaciones (contrato), cada una de ellas con una responsabilidad y funci&oacute;n. La suma de todas las operaciones que definen dicho comportamiento integran una identidad. La cohesi&oacute;n no es buena cuando nos encontramos con que hay operaciones con un objetivo junto a otras con otro objetivo dentro de un mismo componente, cuya definici&oacute;n funcional es una y clara. Un ejemplo claro y sencillo de esto es el siguiente. Imaginemos un componente que gestiona el estado de una ficha de datos personales. Lo l&oacute;gico ser&iacute;a que su contrato tuviese operaciones como &quot;Actualizar nombres y apellidos&quot;, &quot;Eliminar tel&eacute;fono de contacto&quot; y dem&aacute;s. Si defino una operaci&oacute;n que calcula el pron&oacute;stico del tiempo en Tombuct&uacute; para el pr&oacute;ximo fin de semana, pues la cohesi&oacute;n se anula completamente, ya que nada tiene que ver con el resto de operaciones y, sobretodo, con el fin del componente.</p>
<p>Con esto propongo un debate sobre estos dos conceptos, para enriquecernos entre todos y mejorar el uso que hacemos de ello a diario en nuestros dise&ntilde;os. Aunque no lo parezca, aplicamos estas ideas constantemente, en todos los niveles de un equipo de desarrollo de soluciones inform&aacute;ticas.</p>
<p>Un saludo para todos.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/phedetech.wordpress.com/4/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/phedetech.wordpress.com/4/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phedetech.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phedetech.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phedetech.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phedetech.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phedetech.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phedetech.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phedetech.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phedetech.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phedetech.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phedetech.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phedetech.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phedetech.wordpress.com/4/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phedetech.wordpress.com/4/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phedetech.wordpress.com/4/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=4&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phedetech.wordpress.com/2006/04/24/cohesion-y-acoplamiento/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05738f009a772bc1ebf18844422f230a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fede</media:title>
		</media:content>
	</item>
		<item>
		<title>Bienvenidos a mi blog técnico</title>
		<link>http://phedetech.wordpress.com/2006/04/24/bienvenidos-a-mi-blog-tecnico/</link>
		<comments>http://phedetech.wordpress.com/2006/04/24/bienvenidos-a-mi-blog-tecnico/#comments</comments>
		<pubDate>Mon, 24 Apr 2006 15:23:07 +0000</pubDate>
		<dc:creator>Fede</dc:creator>
				<category><![CDATA[Columna]]></category>

		<guid isPermaLink="false">https://phedetech.wordpress.com/2006/04/24/bienvenidos-a-mi-blog-tecnico/</guid>
		<description><![CDATA[Hola a todos, He decido abrir un blog t&#233;cnico donde comentar temas relacionados con el desarrollo de soluciones inform&#225;ticas. Principalmente voy a escribir sobre la calidad en el dise&#241;o y desarrollo de software, intentando no meterme demasiado en temas de una u otra tecnolog&#237;a. Por una cuesti&#243;n de afinidad personal, cuando hable de c&#243;digo seguramente [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=3&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hola a todos,</p>
<p>He decido abrir un blog t&eacute;cnico donde comentar temas relacionados con el desarrollo de soluciones inform&aacute;ticas. Principalmente voy a escribir sobre la calidad en el dise&ntilde;o y desarrollo de software, intentando no meterme demasiado en temas de una u otra tecnolog&iacute;a. Por una cuesti&oacute;n de afinidad personal, cuando hable de c&oacute;digo seguramente utilizar&eacute; Java para demostrar ejemplos, pero har&eacute; el esfuerzo de ejemplificar con otros lenguajes de programaci&oacute;n como ser Ruby, C, Smalltalk, PHP y quiz&aacute;s alguno de Microsoft.</p>
<p>Espero que los contenidos sean interesantes para todos y que podamos colaborar juntos para aprender un poco m&aacute;s sobre c&oacute;mo se puede trabajar mejor en esta actividad, la del dise&ntilde;o y desarrollo de soluciones inform&aacute;ticas.</p>
<p>Un saludo para todos.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/phedetech.wordpress.com/3/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/phedetech.wordpress.com/3/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/phedetech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/phedetech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/phedetech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/phedetech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/phedetech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/phedetech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/phedetech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/phedetech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/phedetech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/phedetech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/phedetech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/phedetech.wordpress.com/3/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/phedetech.wordpress.com/3/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/phedetech.wordpress.com/3/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=phedetech.wordpress.com&amp;blog=199108&amp;post=3&amp;subd=phedetech&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://phedetech.wordpress.com/2006/04/24/bienvenidos-a-mi-blog-tecnico/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/05738f009a772bc1ebf18844422f230a?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Fede</media:title>
		</media:content>
	</item>
	</channel>
</rss>
