<?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>Ángel C. Lázaro &#187; Desarrollo</title>
	<atom:link href="http://angellazaro.wordpress.com/category/desarrollo/feed/" rel="self" type="application/rss+xml" />
	<link>http://angellazaro.wordpress.com</link>
	<description>               Desarrollo e Ingeniería del Software</description>
	<lastBuildDate>Thu, 22 Oct 2009 08:16:36 +0000</lastBuildDate>
	<generator>http://wordpress.com/</generator>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<cloud domain='angellazaro.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://www.gravatar.com/blavatar/158649f1dba303f1f4ff47633b85680a?s=96&#038;d=http://s.wordpress.com/i/buttonw-com.png</url>
		<title>Ángel C. Lázaro &#187; Desarrollo</title>
		<link>http://angellazaro.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://angellazaro.wordpress.com/osd.xml" title="Ángel C. Lázaro" />
		<item>
		<title>Rendimiento en aplicaciones PHP</title>
		<link>http://angellazaro.wordpress.com/2009/10/22/rendimiento-en-aplicaciones-php/</link>
		<comments>http://angellazaro.wordpress.com/2009/10/22/rendimiento-en-aplicaciones-php/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 00:05:01 +0000</pubDate>
		<dc:creator>Ángel Cristóbal Lázaro Ríos</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[KCacheGrind]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[The Grinder]]></category>
		<category><![CDATA[Xdebug]]></category>

		<guid isPermaLink="false">http://angellazaro.wordpress.com/?p=242</guid>
		<description><![CDATA[En esta última semana he comenzado a participar en un nuevo proyecto. Consiste en hacer una auditoría del rendimiento y la calidad del software de una aplicación implementada con tecnología PHP. El problema está en que la aplicación va degradando el servidor de aplicaciones web Apache hasta que este provoca una denegación de servicio y [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=242&subd=angellazaro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>En esta última semana he comenzado a participar en un nuevo proyecto. Consiste en hacer una auditoría del rendimiento y la calidad del software de una aplicación implementada con tecnología PHP. El problema está en que la aplicación va degradando el servidor de aplicaciones web Apache hasta que este provoca una denegación de servicio y es preciso reiniciarlo.</p>
<p>Para esta auditoría se van a utilizar diversas herramientas:</p>
<p>1. Análisis del rendimiento de la aplicación web. En esta parte se localizarán los cuellos de botella en tiempo de ejecución y en definitiva los motivos por los cuales la aplicación consigue degradar el servidor hasta el punto de hacer que provoque la denegación de servicio antes comentada. Para ello se van a utilizar dos herramientas, <a href="http://grinder.sourceforge.net/">The Grinder</a> y <a href="http://kcachegrind.sourceforge.net/html/Home.html">XCacheGrind</a>.</p>
<ul>
<li><strong>The Grinder</strong>. Me la recomendó mi compañero <a href="http://amunizmartin.wordpress.com/">Antonio</a>, y es simplemente espectacular. Es una herramienta basada software libre y su funcionamiento e instalación es muy simple, está basado en una consola central y en uno o varios agentes, cada uno de estos agentes (que son distribuidos entre distintas máquinas físicas) despliega una serie de workers y cada uno de estos workers despliega los hilos que los agentes tengan configurados. Además proporciona un proxy que nos permite realizar las pruebas UI fácilmente con cualquier navegador.</li>
</ul>
<div id="attachment_250" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-250" title="The Grinder" src="http://angellazaro.files.wordpress.com/2009/10/graph.png?w=300&#038;h=216" alt="Esquema de funcionamiento de The Grinder" width="300" height="216" /><p class="wp-caption-text">Esquema de funcionamiento de The Grinder</p></div>
<ul>
<li><strong>XCacheGrind</strong>. Esta herramienta tiene dos variantes WinCacheGrind y KCacheGrind y permiten visualizar gráficamente el consumo de tiempo que cada una de las funciones o scripts PHP ha tardado en ejecutarse y <a href="http://www.xdebug.com/docs/profiler">otra información</a> que puede ser de interés para realizar las tareas de profile. Para ello hace uso de los logs que proporciona <a href="http://www.xdebug.com/">XDebug</a>, que se tendrán que configurar con los siguientes parámetros:</li>
</ul>
<blockquote><p>xdebug.remote_autostart = On<br />
xdebug.remote_enable=On<br />
xdebug.profiler_output_dir = &#8220;/home/aclr/kcachegrind/&#8221;<br />
xdebug.trace_output_dir = &#8220;/home/aclr/kcachegrind/&#8221;<br />
xdebug.profiler_append = On<br />
xdebug.profiler_enable = On<br />
xdebug.auto_trace = On</p></blockquote>
<p>Veamos un ejemplo de la información que obtenemos haciendo uso de estas herramientas:</p>
<blockquote><p>&lt;?php<br />
function escribe($cad){<br />
echo $cad.&#8217;&lt;br/&gt;&#8217;;<br />
}</p>
<p>for($i = 0 ; $i &lt; 100 ; $i++){<br />
for($j = 0; $j &lt; 100 ; $j++){<br />
escribe(&#8220;hola&#8221;);<br />
}<br />
}<br />
?&gt;</p></blockquote>
<p><img class="aligncenter size-medium wp-image-258" title="Distribución de la ejecución" src="http://angellazaro.files.wordpress.com/2009/10/0015.png?w=300&#038;h=160" alt="Distribución de la ejecución" width="300" height="160" /></p>
<p>Como se puede apreciar en esta imagen solo el 9.6% del tiempo consumido en la ejecución es utilizado por la función escribe, el resto, el 99.4% del tiempo de ejecución se ejecuta en el main, es decir, en el bucle, en un caso real una situación análoga a esta nos diría que tenemos que tratar de centrar nuestros esfuerzos de optimización en el main, no en la función escribe.</p>
<p>En próximas entradas intentaré hablar un poco más en profundidad de The Grinder y sobre las herramientas que se utilizarán para el análisis de la calidad del código.</p>
<p>Aunque me gusta terminar mis posts con la cita de alguna frase célebre que trate o evoque sobre el tema del que versa el post, esta vez voy no podrá ser, son las 2:04 y me voy a la cama <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
Posted in Desarrollo Tagged: KCacheGrind, PHP, The Grinder, Xdebug <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/angellazaro.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/angellazaro.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/angellazaro.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/angellazaro.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/angellazaro.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/angellazaro.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/angellazaro.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/angellazaro.wordpress.com/242/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/angellazaro.wordpress.com/242/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/angellazaro.wordpress.com/242/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=242&subd=angellazaro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://angellazaro.wordpress.com/2009/10/22/rendimiento-en-aplicaciones-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">angellazaro</media:title>
		</media:content>

		<media:content url="http://angellazaro.files.wordpress.com/2009/10/graph.png?w=300" medium="image">
			<media:title type="html">The Grinder</media:title>
		</media:content>

		<media:content url="http://angellazaro.files.wordpress.com/2009/10/0015.png?w=300" medium="image">
			<media:title type="html">Distribución de la ejecución</media:title>
		</media:content>
	</item>
		<item>
		<title>Software libre, de verdad</title>
		<link>http://angellazaro.wordpress.com/2009/08/03/software-libre-de-verdad/</link>
		<comments>http://angellazaro.wordpress.com/2009/08/03/software-libre-de-verdad/#comments</comments>
		<pubDate>Mon, 03 Aug 2009 23:12:45 +0000</pubDate>
		<dc:creator>Ángel Cristóbal Lázaro Ríos</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Docbook]]></category>
		<category><![CDATA[OpenCms]]></category>

		<guid isPermaLink="false">http://angellazaro.wordpress.com/?p=214</guid>
		<description><![CDATA[Hace algún tiempo comenzamos con el desarrollo de un proyecto utilizando tecnología OpenCms, como fruto de este trabajo hemos liberado cinco nuevos módulos que esperamos sea de utilidad para la comunidad (los módulos están modelados con maven y documentados con docbook):
RestrictedVFSWidget
Este módulo es una evolución del wdiget de exploración de OpenCms, con él se modelará [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=214&subd=angellazaro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hace algún tiempo <a href="http://www.gmv.es">comenzamos</a> con el desarrollo de un proyecto utilizando tecnología OpenCms, como fruto de este trabajo hemos <a href="http://www.opencmshispano.es/nav/noticias/noticia_0065.html">liberado</a> <a href="http://programame.net/story/liberados-5-nuevos-modulos-opencms">cinco nuevos módulos</a> que esperamos sea de utilidad para la <a href="http://www.opencms-wiki.org/Available_Modules">comunidad</a> (los módulos están <a href="http://amunizmartin.wordpress.com/2008/11/06/modulos-opencms-y-maven/">modelados con maven</a> y documentados con docbook):</p>
<p><span style="text-decoration:underline;"><strong><span>RestrictedVFSWidget</span></strong></span></p>
<p>Este módulo es una evolución del wdiget de exploración de OpenCms, con él se modelará el comportamiento de un árbol de exploración del directorio virtual de OpenCms en el que tan sólo se mostrarán los directorios y aquellos tipos de contenidos que se hayan configurado en la declaración del tipo de contenido que lo use.</p>
<p><span style="text-decoration:underline;"><strong><span>SurveyModule</span></strong></span></p>
<p>Con este módulo se amplía el funcionamiento del módulo Alkacon OAMP Survey Module, de manera que se ofrece la posibilidad de generar las gráficas de los informes en flash mediante Open Flash Chart.</p>
<p><span style="text-decoration:underline;"><strong> Modulo Alfresco</strong></span></p>
<p>El objetivo de este módulo es proporcionarle a los usuarios de OpenCms una herramienta con la que asignar recursos de un gestor documental Alfresco para ser utilizados en el portal. De esta forma se consigue separar la capa de gestión de contenidos de la capa de gestión documental, pudiendo aprovechar todas las funcionalidades que un gestor documental como Alfresco proporciona.</p>
<p><span style="text-decoration:underline;"><strong><span>Georeference</span></strong></span></p>
<p>Este módulo permite llevar a cabo la geolocalización de puntos a través de Google Maps, estableciendo las localizaciones directamente sobre un mapa que se muestra en el formulario de alta/edición de contenidos de OpenCms.</p>
<p><span style="text-decoration:underline;"><strong>Thesaurus</strong></span></p>
<p>El objetivo de este módulo es proporcionarle a los usuarios de OpenCms una herramienta con la que etiquetar los contenidos (noticias, eventos, etc) que se utilicen en el portal.</p>
<blockquote><p><span>El software es como el sexo, es mejor cuando es libre. <a href="http://es.wikipedia.org/wiki/Linus_Torvalds">Linus </a></span><a href="http://es.wikipedia.org/wiki/Linus_Torvalds">Torvalds</a></p></blockquote>
Posted in Desarrollo Tagged: Docbook, OpenCms <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/angellazaro.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/angellazaro.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/angellazaro.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/angellazaro.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/angellazaro.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/angellazaro.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/angellazaro.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/angellazaro.wordpress.com/214/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/angellazaro.wordpress.com/214/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/angellazaro.wordpress.com/214/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=214&subd=angellazaro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://angellazaro.wordpress.com/2009/08/03/software-libre-de-verdad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">angellazaro</media:title>
		</media:content>
	</item>
		<item>
		<title>Puntos de administración en OpenCms 7.0.5</title>
		<link>http://angellazaro.wordpress.com/2009/05/25/puntos-de-administracion-en-opencms-7-0-5/</link>
		<comments>http://angellazaro.wordpress.com/2009/05/25/puntos-de-administracion-en-opencms-7-0-5/#comments</comments>
		<pubDate>Mon, 25 May 2009 22:17:07 +0000</pubDate>
		<dc:creator>Ángel Cristóbal Lázaro Ríos</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[OpenCms]]></category>

		<guid isPermaLink="false">http://angellazaro.wordpress.com/?p=194</guid>
		<description><![CDATA[Hace ya algo menos de un año que comencé  a trabajar con el gestor de contenidos OpenCms 7.0.5, durante este tiempo he desarrollado nuevos tipos de contenidos, widgets personalizados y puntos de administración, para el desarrollo de estas tareas me he servido de muchos recursos online pero sobre todo me ha sido de gran [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=194&subd=angellazaro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hace ya algo menos de un año que comencé  a trabajar con el gestor de contenidos OpenCms 7.0.5, durante este tiempo he desarrollado nuevos tipos de contenidos, widgets personalizados y puntos de administración, para el desarrollo de estas tareas me he servido de muchos recursos online pero sobre todo me ha sido de gran utilidad el <a href="http://www.opencmshispano.com:8080/mvnforum/mvnforum/index">foro</a> de la comunidad de <a href="http://www.opencmshispano.es/nav/index.html">OpenCmsHispano</a>, es por ello que he decidido realizar este tutorial cuando el otro día me encontré con este <a href="http://www.opencmshispano.com:8080/mvnforum/mvnforum/viewthread?thread=1176">mensaje</a>, manos a la obra.</p>
<p>Un punto de administración en OpenCms es una entrada en la vista de administración del gestor de contenidos con la que podremos realizar ciertas operaciones, OpenCms trae en su distribución básica una serie de entradas de administración con la que se podrán llevar a cabo tareas de administracion de usuarios, módulos, caché, etc, así como los mecanismos necesarios para extender con nuevas entradas estas funcionalidades de administración</p>
<div id="attachment_204" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-204" title="001" src="http://angellazaro.files.wordpress.com/2009/05/001.png?w=300&#038;h=166" alt="Vista de administración del workplace" width="300" height="166" /><p class="wp-caption-text">Vista de administración del workplace</p></div>
<p>Para crear un nuevo punto de administración en OpenCms deberemos crear la correspondiente estructura de directorios en <strong>/system/workplace/admin </strong>es en este directorio donde se definen los puntos de administración a través de la creación y edición de propiedades de los directorios.</p>
<div id="attachment_205" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-205" title="002" src="http://angellazaro.files.wordpress.com/2009/05/002.png?w=300&#038;h=166" alt="Correspondencia con la zona de administración" width="300" height="166" /><p class="wp-caption-text">Correspondencia con la zona de administración</p></div>
<p>En este tutorial vamos a crear un nuevo punto de administración en OpenCms denominado <strong>&#8220;Personas&#8221; </strong>que nos permitirá hacer CRUD de entidades de tipo persona, para ello he desarrollado un nuevo módulo que he denominado <strong>&#8220;PersonManagement&#8221;</strong>. Como veréis cuando instaléis el módulo (y reincieis el servidor de aplicaciones) el módulo genera un nuevo directorio <strong>/system/workplace/admin</strong>, si accedemos a las propiedades de este directorio veremos que se encuentran editadas las siguientes propiedades:</p>
<ul>
<li><strong>Description</strong>: Establece el texto que se mostrará en la caja <strong>&#8220;Ayuda&#8221;</strong> de la zona de administración.</li>
<li><strong>NavImage</strong>: Establece la imagen que se mostrará en la zona de administración.</li>
<li><strong>NavInfo</strong>: Establece el nombre del grupo al que pertenecerá el nuevo punto de administración.</li>
<li><strong>NavPos</strong>: Establece con un número real (float) la posición que ocupará el icono del nuevo punto de administración.</li>
<li><strong>NavText</strong>: Establece el texto que aparecerá bajo el icono del punto de administración.</li>
<li><strong>Title</strong>: Establece el título del directorio aunque no es de utilidad dentro de la zona de administración.</li>
<li><strong>admintoolhandler-class</strong>: Establece la clase que se ejecutará para hacer la gestión de los permisos de acceso al punto de administración.</li>
<li><strong>default-file</strong>: Establece la página jsp que se ejecutará cuando accedamos a ese directorio.</li>
</ul>
<div id="attachment_206" class="wp-caption aligncenter" style="width: 310px"><img class="size-medium wp-image-206" title="003" src="http://angellazaro.files.wordpress.com/2009/05/003.png?w=300&#038;h=166" alt="Propiedades del directorio" width="300" height="166" /><p class="wp-caption-text">Propiedades del directorio</p></div>
<p>Si accedemos a este directorio veremos que podemos encontrar tres páginas jsp person_list.jsp (genera el listado de los elementos), person_edit.jsp (genera el formulario de edición de los elementos de tipo persona) y person_new.jsp (genera el formulario de creación de elementos de tipo persona), si accedemos a cada una de estas páginas veremos cómo podemos encontrar un fragmento de código que sigue el siguiente patrón:</p>
<p>&lt;%@page import=&#8221;paquete.de.la.clase.*&#8221;%&gt;<br />
&lt;%<br />
NmbreClase admin = new NmbreClase(pageContext, request, response);<br />
admin.displayDialog();<br />
%&gt;</p>
<p>Como podemos observar para generar el formulario solo necesitamos una clase, que extenderá las correspondientes clase de OpenCms, y que se encargará de generar todo el código html necesario para<br />
generar un listado o un formulario de edición o de alta.</p>
<p>En estas páginas jsp también es necesario editar las propiedades para que el contenido de dichas páginas se muetren correctamente.</p>
<p>También me gustaría haceros un par de recomendaciones para el desarrollo de funcionalidades con OpenCms:</p>
<ul>
<li><a href="http://www.opencms.org/en/development/cvs.html">Código fuente de OpenCms</a>.</li>
<li><a href="http://www.packtpub.com/opencms-7-development/book">El libro OpenCms 7 Development</a>.</li>
</ul>
<p><a href="http://www.box.net/shared/zefb4fp46q">Código del módulo</a></p>
<blockquote><p>La información compartida progresa y mejora, de manera que su valor sólo puede aumentar. El conocimiento acaparado simplemente se detiene. Paul Jones, director de <a href="http://www.ibiblio.org/index.html">ibiblio</a>.</p></blockquote>
Posted in Desarrollo Tagged: OpenCms <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/angellazaro.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/angellazaro.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/angellazaro.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/angellazaro.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/angellazaro.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/angellazaro.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/angellazaro.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/angellazaro.wordpress.com/194/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/angellazaro.wordpress.com/194/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/angellazaro.wordpress.com/194/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=194&subd=angellazaro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://angellazaro.wordpress.com/2009/05/25/puntos-de-administracion-en-opencms-7-0-5/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">angellazaro</media:title>
		</media:content>

		<media:content url="http://angellazaro.files.wordpress.com/2009/05/001.png?w=300" medium="image">
			<media:title type="html">001</media:title>
		</media:content>

		<media:content url="http://angellazaro.files.wordpress.com/2009/05/002.png?w=300" medium="image">
			<media:title type="html">002</media:title>
		</media:content>

		<media:content url="http://angellazaro.files.wordpress.com/2009/05/003.png?w=300" medium="image">
			<media:title type="html">003</media:title>
		</media:content>
	</item>
		<item>
		<title>Openfire y OpenCms se conocen</title>
		<link>http://angellazaro.wordpress.com/2009/04/28/openfire-y-opencms-se-conocen/</link>
		<comments>http://angellazaro.wordpress.com/2009/04/28/openfire-y-opencms-se-conocen/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 21:15:58 +0000</pubDate>
		<dc:creator>Ángel Cristóbal Lázaro Ríos</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[OpenCms]]></category>
		<category><![CDATA[Openfire]]></category>

		<guid isPermaLink="false">http://angellazaro.wordpress.com/?p=182</guid>
		<description><![CDATA[En el proyecto en el que actualmente estoy trabajando tiene la necesidad de incorporar un servicio de mensajería instantánea (IM), como punto de partida mi compañero Manu me recomendó que empezara estudiando la tecnología que había desarrollada alrededor del protocolo Jabber (protocolo libre IM basado en XML).
Alrededor de este protocolo hay toda una comunidad de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=182&subd=angellazaro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>En el proyecto en el que actualmente estoy trabajando tiene la necesidad de incorporar un servicio de mensajería instantánea (IM), como punto de partida mi compañero <a href="http://www.manuelrecena.com">Manu</a> me recomendó que empezara estudiando la tecnología que había desarrollada alrededor del protocolo <a href="http://es.wikipedia.org/wiki/Jabber">Jabber</a> (protocolo libre IM basado en XML).</p>
<p>Alrededor de este protocolo hay toda una comunidad de software libre que se dedica al desarrollo tanto de servidores como de clientes <a href="http://es.wikipedia.org/wiki/XMPP">XMPP</a>. Entre todos los servidores que estuve evaluando me decanté por uno que por su extensibilidad, tecnología y comunidad me convenció, <a href="http://www.igniterealtime.org/projects/openfire/index.jsp">Openfire</a>. Se trata de un servidor de código abierto basado en Java, extensible a través de plugins y desarrollado por la comunidad bajo licencia GPL.</p>
<p>Como comentaba antes en el proyecto existía la necesidad de integrar un servidor de mensajería instantánea, la integración de Openfire con <a href="http://www.opencms.org/en/">Opencms</a>, el CMS que estamos utilizando, consistía en la autenticación de los usuarios. Para conseguirlo hemos tenido que hacer dos cosas, una del lado de OpenCms y otra de Openfire.</p>
<p><strong>OpenCms</strong></p>
<p>Hemos desarrollado un <a href="http://angellazaro.wordpress.com/2009/01/18/web-services-sobre-opencms/">módulo de OpenCms que ofrece un servicio web</a> con dos operaciones para realizar la autenticación de usuario, a este servicio web solo hay que pasarle el usuario y la contraseña encriptada, él se encargará de comprobar que el usuario y la contraseña son correctos así como de chequear toda la lógica de negocio, devolviendo un objeto en el que se indica si el proceso ha sido correcto.</p>
<p><strong>Openfire</strong></p>
<p>En este caso hemos <a href="http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/plugin-dev-guide.html">desarrollado un plugin</a> que cuenta con un cliente para el servicio web y que es el encargado de hacer la petición. Para que Openfire realice la autenticación utilizando la clase que hemos desarrollado, y que ha de implementar la interfaz (<span class="n">AuthProvider</span>), en el método de inicialización del plugin hemos de cambiar la propiedad <strong><span class="s">provider.auth.className </span></strong><span class="s">para indicarle que utilice nuestra clase, es sumamente importante que previo a este paso hayamos registrado en el classpath del plugin dicha clase.<br />
</span></p>
<p><span class="s">Una vez hecho esto, OpenCms y Openfire ya se conocen ;-p</span></p>
<blockquote>
<p class="resaltado">No hay lugares remotos. En virtud de los medios de comunicación actuales, todo es ahora. <strong>Herbert Marshall Mcluhan</strong></p>
</blockquote>
Posted in Desarrollo Tagged: OpenCms, Openfire <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/angellazaro.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/angellazaro.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/angellazaro.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/angellazaro.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/angellazaro.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/angellazaro.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/angellazaro.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/angellazaro.wordpress.com/182/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/angellazaro.wordpress.com/182/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/angellazaro.wordpress.com/182/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=182&subd=angellazaro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://angellazaro.wordpress.com/2009/04/28/openfire-y-opencms-se-conocen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">angellazaro</media:title>
		</media:content>
	</item>
		<item>
		<title>Web Services sobre OpenCms</title>
		<link>http://angellazaro.wordpress.com/2009/01/18/web-services-sobre-opencms/</link>
		<comments>http://angellazaro.wordpress.com/2009/01/18/web-services-sobre-opencms/#comments</comments>
		<pubDate>Sun, 18 Jan 2009 20:13:59 +0000</pubDate>
		<dc:creator>Ángel Cristóbal Lázaro Ríos</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Axis2]]></category>
		<category><![CDATA[OpenCms]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://angellazaro.wordpress.com/?p=149</guid>
		<description><![CDATA[En este post voy a explicar un tema muy específico: cómo generar un módulo de OpenCms 7.0.5 que despliegue un web service sobre mismo contexto de OpenCms 7.0.5.
Para ello me recomendaron que me basara en la arquitectura Axis2 de Apache.
Antes de comenzar es muy importante que se haya comprendido cómo se ha de trabajar con [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=149&subd=angellazaro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>En este post voy a explicar un tema muy específico: cómo generar un módulo de OpenCms 7.0.5 que despliegue un web service sobre mismo contexto de OpenCms 7.0.5.</p>
<p>Para ello me <a href="http://www.manuelrecena.com/blog">recomendaron</a> que me basara en la arquitectura <a href="http://ws.apache.org/axis2/">Axis2</a> de Apache.</p>
<p>Antes de comenzar es muy importante que se haya comprendido cómo se ha de trabajar con un módulo de OpenCms 7.0.5 y Maven, para ello me gustaría recomendaros el estupendo <a href="http://amunizmartin.wordpress.com/2008/11/06/modulos-opencms-y-maven/">post</a> que en su día escribió mi compañero <a href="http://amunizmartin.wordpress.com">Antonio Manuel Muñiz</a> respecto a este tema.</p>
<p>El primer paso que debemos dar para poder desplegar servicios web sobre el contexto de OpenCms, a través de un módulo, es preparar la instancia de OpenCms para tal propósito, para ello crearemos dentro del directorio <strong>&#8220;WEB-INF&#8221;</strong> un nuevo directorio <strong>&#8220;services&#8221;</strong> tal y como se muestra en la siguiente ilustración:</p>
<div id="attachment_154" class="wp-caption aligncenter" style="width: 155px"><img class="size-full wp-image-154" title="001" src="http://angellazaro.files.wordpress.com/2009/01/001.png?w=145&#038;h=192" alt="Estructura de directorios" width="145" height="192" /><p class="wp-caption-text">Estructura de directorios</p></div>
<p>A continuación deberemos modificar el fichero <strong>web.xml</strong> de OpenCms para declarar el servlet de Axis2 que se encargará de atender las peticiones a los servicios web que declaremos.</p>
<p style="text-align:left;"><em><strong> &lt;servlet&gt;<br />
&#8212;-&lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt;<br />
</strong></em><em><strong>&#8212;-</strong></em><em><strong>&lt;display-name&gt;Apache-Axis Servlet&lt;/display-name&gt;<br />
</strong></em><em><strong>&#8212;-</strong></em><em><strong> &lt;servlet-class&gt;</strong></em><em><strong>org.apache.axis2.transport.http.AxisServlet</strong></em><em><strong>&lt;/servlet-class&gt;<br />
</strong></em><em><strong>&#8212;-</strong></em><em><strong>&lt;load-on-startup&gt;1&lt;/load-on-startup&gt;<br />
&lt;/servlet&gt;</strong></em></p>
<p><em><strong>&lt;servlet-mapping&gt;<br />
</strong></em><em><strong>&#8212;-</strong></em><em><strong>&lt;servlet-name&gt;AxisServlet&lt;/servlet-name&gt;<br />
</strong></em><em><strong>&#8212;-</strong></em><em><strong>&lt;url-pattern&gt;/services/*&lt;/url-pattern&gt;<br />
&lt;/servlet-mapping&gt;<br />
</strong></em></p>
<p>Una vez hecho esto, crearemos un módulo de OpenCms y modificaremos las directivas <strong>&#8220;&lt;exportpoint /&gt;&#8221;</strong> del fichero &#8220;<strong>manifest.xml</strong>&#8221; para que OpenCms copie en el directorio <strong>&#8220;/WEB-INF/services&#8221;</strong> los servicios web desplegados como ficheros <strong>.aar</strong></p>
<p><em><strong>&lt;exportpoint uri=&#8221;/system/modules/com.test.webservice.regard/services/&#8221; destination=&#8221;WEB-INF/services/&#8221;/&gt;<br />
</strong></em></p>
<p>Lo que tenemos que hacer a continuación es generar el fichero <strong><a href="http://www.box.net/shared/ialx0ycgbh">pom.xml</a> </strong>necesario para que realice dos tareas fundamentales: obtener las librerías necesarias para que los servicios web puedan funcionar sobre la instancia de OpenCms y para que genere el fichero <strong>.aar</strong> a partir de los fuentes que le indiquemos.</p>
<p>Una vez hecho todo lo anterior tendremos listo el módulo para poder generar servicios web que corran dentro del mismo contexto que el OpenCms sobre el que se despliegan y, por tanto, puedan acceder a su información, para ello lo último que tendremos que hacer será generar un <a href="http://es.wikipedia.org/wiki/Patr%C3%B3n_de_dise%C3%B1o_Singleton">Singleton</a> o un método dentro de la propia clase que se encargue de iniciar un objeto de la clase CmsObject que será el objeto a partir del cual podremos realizar todas las operaciones necesarias. Para llevar a cabo el desarrollo del servicio web para Axis2 os recomiendo el siguiente <a href="http://willyxoft.wordpress.com/articulos/comienzo-rapido-axis2/#Crear_Servicios">post</a>.</p>
<p>Una vez hecho todo lo anterior ya solo nos quedará desplegar el módulo OpenCms y probar el nuevo servicio web a través de algún programa de generación de clientes.</p>
<div id="attachment_160" class="wp-caption aligncenter" style="width: 310px"><a href="http://angellazaro.files.wordpress.com/2009/01/0021.png"><img class="size-medium wp-image-160" title="0021" src="http://angellazaro.files.wordpress.com/2009/01/0021.png?w=300&#038;h=180" alt="0021" width="300" height="180" /></a><p class="wp-caption-text">Respuesta positiva</p></div>
<div id="attachment_162" class="wp-caption aligncenter" style="width: 310px"><a href="http://angellazaro.files.wordpress.com/2009/01/0031.png"><img class="size-medium wp-image-162" title="0031" src="http://angellazaro.files.wordpress.com/2009/01/0031.png?w=300&#038;h=180" alt="Respuesta negativa" width="300" height="180" /></a><p class="wp-caption-text">Respuesta negativa</p></div>
<p><a href="http://www.box.net/shared/d4hcvhmsuk">Aquí</a> dejo el módulo por si os es de utilidad.</p>
Posted in Desarrollo Tagged: Axis2, OpenCms, Web Services <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/angellazaro.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/angellazaro.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/angellazaro.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/angellazaro.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/angellazaro.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/angellazaro.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/angellazaro.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/angellazaro.wordpress.com/149/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/angellazaro.wordpress.com/149/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/angellazaro.wordpress.com/149/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=149&subd=angellazaro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://angellazaro.wordpress.com/2009/01/18/web-services-sobre-opencms/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">angellazaro</media:title>
		</media:content>

		<media:content url="http://angellazaro.files.wordpress.com/2009/01/001.png" medium="image">
			<media:title type="html">001</media:title>
		</media:content>

		<media:content url="http://angellazaro.files.wordpress.com/2009/01/0021.png?w=300" medium="image">
			<media:title type="html">0021</media:title>
		</media:content>

		<media:content url="http://angellazaro.files.wordpress.com/2009/01/0031.png?w=300" medium="image">
			<media:title type="html">0031</media:title>
		</media:content>
	</item>
		<item>
		<title>NetBeans PHP IDE vs EclipsePDT</title>
		<link>http://angellazaro.wordpress.com/2008/11/22/netbeans-php-ide-vs-eclipsepdt/</link>
		<comments>http://angellazaro.wordpress.com/2008/11/22/netbeans-php-ide-vs-eclipsepdt/#comments</comments>
		<pubDate>Sat, 22 Nov 2008 17:24:29 +0000</pubDate>
		<dc:creator>Ángel Cristóbal Lázaro Ríos</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[IDE]]></category>
		<category><![CDATA[NetBeans]]></category>
		<category><![CDATA[PDT]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://angellazaro.wordpress.com/?p=88</guid>
		<description><![CDATA[Hace ya algún tiempo leí un post en el que Justin Carmony hacía una comparación de dos IDE´s para trabajar con tecnología PHP, Zend Studio  y Eclipse PDT. Me gustaría seguir la tarea que comenzara Justin (como se puede observar por el título del post) haciendo una comparación entre dos IDE´s de desarrollo de software [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=88&subd=angellazaro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Hace ya algún tiempo leí un post en el que <a href="http://www.justincarmony.com/blog/">Justin Carmony</a> hacía una <a href="http://www.justincarmony.com/blog/2008/09/24/zend-studio-vs-php-development-tools/">comparación</a> de dos IDE´s para trabajar con tecnología PHP, Zend Studio  y Eclipse PDT. Me gustaría seguir la tarea que comenzara Justin (como se puede observar por el título del post) haciendo una comparación entre dos IDE´s de desarrollo de software libre, Eclipse PDT y la que podría ser la estrella revelación de la temporada NetBeans IDE 6.5.</p>
<p>Ahora bien, qué factores podríamos evaluar sobre estos dos IDE´s, Justin nos propone 6, veáse: facilidad de instalación, refactoring, PHP Unit testing, debugging, editor y Zend Platform &amp; Zend Framework. A mí me gustaría plantear los siguientes factores: code completion, code errors y project plan, aunque también comentaré algo sobre los primeros.</p>
<p><strong>Debbuging.</strong></p>
<p>Esta primera característica es una de las que Justin evalua en su post. Tras haber trabajado un tiempo con PHP PDT me he podido percatar que durante la depuración la profundidad de exploración no pasaba de 3, este problema no lo tenemos en NetBeans, como podemos ver en las imágenes.</p>
<p><strong>Code completion.</strong></p>
<p>Con este factor se evaluará la capacidad del IDE para completar el código, facilitando de esta manera la programación. Aunque tanto PDT como Netbeans poseen esta característica, la ejecutan de forma distinta, mientras que Netbeans completa el código tanto de las funciones y métodos que hemos definido, como de las funciones existentes en el core y extensiones de PHP, PDT lo hace tan solo de los métodos y funciones que están definidos en el proyecto actual.</p>
<p><strong>Code errors.</strong></p>
<p>Con este factor se evaluará la capacidad del IDE no sólo para mostrar los errores que se pueden producir durante la programación, sino también la claridad y completitud de los mismos. En este factor la diferencia es más clara, como podemos observar en las siguientes imágenes.</p>
<p><strong>Project plan.</strong></p>
<p>Con este factor se pretende evaluar el roadmap de ambos proyectos, ya que éste nos indica las líneas de trabajo que se están siguiendo e incluso podremos solicitar qué líneas de trabajo nos gustaría que se siguieran. En la <a href="http://wiki.netbeans.org/PHPDevelopmentPlanNB7">wiki del proyecto Netbeans</a> podemos ver cuáles son las características que se van a implementar en futuras releases del IDE e incluso ¡¡¡votar por las que más nos interesen!!!, entre ellas podemos encontrar algunas muy interesantes como PHP Unit Support, Support for Symfony, PHPDocumentor integration y otras muchas. En el <a href="http://www.eclipse.org/pdt/plans/php_plan_2_0.php">roadmap de PDT IDE</a> podemos encontrar cuál será el mantenimiento evolutivo del proyecto, de las características que están planeadas implementar llama la atención, personalmente: Code Template y Code Assit for Dynamic Variables.</p>

<a href='http://angellazaro.wordpress.com/2008/11/22/netbeans-php-ide-vs-eclipsepdt/attachment/002/' title='002'><img width="150" height="90" src="http://angellazaro.files.wordpress.com/2008/11/002.png?w=150&#038;h=90" class="attachment-thumbnail" alt="" title="002" /></a>
<a href='http://angellazaro.wordpress.com/2008/11/22/netbeans-php-ide-vs-eclipsepdt/001-2/' title='001'><img width="150" height="90" src="http://angellazaro.files.wordpress.com/2008/11/001.png?w=150&#038;h=90" class="attachment-thumbnail" alt="" title="001" /></a>
<a href='http://angellazaro.wordpress.com/2008/11/22/netbeans-php-ide-vs-eclipsepdt/attachment/005/' title='005'><img width="150" height="90" src="http://angellazaro.files.wordpress.com/2008/11/005.png?w=150&#038;h=90" class="attachment-thumbnail" alt="" title="005" /></a>
<a href='http://angellazaro.wordpress.com/2008/11/22/netbeans-php-ide-vs-eclipsepdt/attachment/006/' title='006'><img width="150" height="90" src="http://angellazaro.files.wordpress.com/2008/11/006.png?w=150&#038;h=90" class="attachment-thumbnail" alt="" title="006" /></a>

<blockquote><p>La construcción exitosa de toda máquina depende de la perfección de las herramientas empleadas. Charles Babbage</p></blockquote>
Posted in Desarrollo Tagged: IDE, NetBeans, PDT, PHP <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/angellazaro.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/angellazaro.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/angellazaro.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/angellazaro.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/angellazaro.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/angellazaro.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/angellazaro.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/angellazaro.wordpress.com/88/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/angellazaro.wordpress.com/88/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/angellazaro.wordpress.com/88/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=88&subd=angellazaro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://angellazaro.wordpress.com/2008/11/22/netbeans-php-ide-vs-eclipsepdt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">angellazaro</media:title>
		</media:content>
	</item>
		<item>
		<title>Gestión de contenidos. OpenCms 7 y Drupal 6.</title>
		<link>http://angellazaro.wordpress.com/2008/11/13/gestion-de-contenidos-opencms-7-y-drupal-6/</link>
		<comments>http://angellazaro.wordpress.com/2008/11/13/gestion-de-contenidos-opencms-7-y-drupal-6/#comments</comments>
		<pubDate>Thu, 13 Nov 2008 22:52:57 +0000</pubDate>
		<dc:creator>Ángel Cristóbal Lázaro Ríos</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[OpenCms]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://angellazaro.wordpress.com/?p=90</guid>
		<description><![CDATA[Después de todo este tiempo sin escribir me gustaría hablar de dos gestores de contenidos con los que he estado trabajando durante este tiempo, OpenCms 7 y Drupal 6.
Alguien me enseñó que en los proyectos de gestión de contenidos a la hora de seleccionar el CMS con el que vamos a trabajar nos interesa tener [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=90&subd=angellazaro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Después de todo este tiempo sin escribir me gustaría hablar de dos gestores de contenidos con los que he estado trabajando durante este tiempo, OpenCms 7 y Drupal 6.</p>
<p><a href="http://www.manuelrecena.com/">Alguien</a> me enseñó que en los proyectos de gestión de contenidos a la hora de seleccionar el CMS con el que vamos a trabajar nos interesa tener en cuenta, entre otros, tres factores: comunidad que existe tras el producto, facilidad para modificar la funcionalidad que el CMS nos proporciona y facilidad para modificar su aspecto visual para adaptarlo a la entidad corporativa del cliente, analicemos estos factores para los dos gestores de contenido que nos ocupan.</p>
<p>OpenCms 7 es un gestor de contenidos open source desarrollado por la empresa <a href="http://www.alkacon.com/en/">Alkacon Software</a> haciendo uso de Java y XML. Para su instalación necesita un contenedor de aplicaciones como Tomcat y un SGBD como MySQL. El proceso de instalación es fácil, ya que tras su despliegue en el contendor de aplicaciones tan solo es necesario seguir un gestor de instalación que nos irá solicitando los datos necesarios para llevar a cabo la instalación del CMS. La idea de OpenCms va un poco más allá, además de proporcionar el propio gestor de contenidos, este CMS intenta proporcionar un IDE a través del cual poder realizar nuestros desarrollos.</p>
<p>Drupal 6 es un gestor de contenidos open source que fue originalmente desarrollado por Dries Buytaert y es  usado para impulsar los sitios web Debian Planet, Spread Firefox, Kernel Trap y más. Para su instalación necesita un servidor web como Apache y un SGBD como MySQL, al igual que ocurre con OpenCms, Drupal proporciona un gestor de instalación paso a paso.</p>
<p>Estos dos CMS tienen en común que proporcionan un marco de trabajo con una serie de funcionalidades básicas y la capacidad de extender dichas funcionalidades básicas a través del desarrollo de nuevos módulos, funcionales, de contenido y de visualización (skins), a partir de aquí todo es distinto, veámoslo:</p>
<p><strong>Comunidad</strong></p>
<p>Cuando empezamos a utilizar estos dos gestores de contenidos vemos, a la luz de las búsquedas, que existe una gran diferencia entre las comunidades de OpenCms y de Drupal, podríamos fijarnos en el número de módulos que la <a href="http://www.ohloh.net/projects/drupal-contributions">comunidad</a> de <a href="http://www.ohloh.net/projects/drupal">Drupal</a> a aportado y el número de módulos de la <a href="http://www.ohloh.net/projects/4368">comunidad de OpenCms</a>.</p>
<p><strong>Extensión funcional</strong></p>
<p>La extensión funcional de estos dos CMS´s se realiza a través de la creación de módulos, ya sean funcionales o de contenido. La creación de un tipo de contenido para OpenCms es, a priori, más ventajosa que la de Drupal, pero ahí está el matiz, a priori, si lo que queremos crear es un tipo de contenido nuevo simple, por ejemplo, una noticia, con validaciones simples, comprobar si los campos están rellenos, OpenCms nos lo pone más fácil que Drupal, pero esa facilidad es un arma de doble filo cuando queremos hacer algo más complicado, por ejemplo una validación que no se pueda realizar con expresiones regulares, por ejemplo, que la fecha de alta de la noticia no sea posterior al día actual, ahí es donde Drupal le saca ventaja a OpenCms, mientras que con OpenCms tendríamos que crear una clase que X&#8217; que heredara de la clase X y que implementa la interfaz Y, con Drupal tan solo tendríamos que tomar el valor del campo en el correspondiente hook y realizar la validación mencionada, esto para tipos de contenidos, el caso más fácil, pero si complicamos el caso, por ejemplo con la creación de un módulo funcional de administración, empezaremos a tener problemas, incluso en el propio desarrollo. Me explico, la idea de OpenCms de proporcionar un marco desde el que poder implementar, ahora mismo la considero hilarante, teniendo en cuenta el estado actual del mercado de IDE´s, suponiendo que no vamos a usar OpenCms para desarrollar nos encontramos con el problema del versionado, ¿cómo lo hacemos?. Cuando tenemos un módulo de contenidos versionamos el módulo y listo, pero cuando desarrollamos un módulo funcional, mucho de los ficheros y estructura de directorios han de ubicarse en una carpeta específica del VFS, para solventar este problema, un posible solución pasaría por replicar en el módulo los directorios VFS y mantener el fichero manifest.xml para que al importar el módulo lo mapee correctamente. Con Drupal no nos encontramos con este problema, los módulos, ya sean de contenidos o funcionales tienen una ubicación específica y desde ahí pueden trabajar, no necesitan declarar ninguna propidad y el versionado es trivial.</p>
<p><strong>Apariencia</strong></p>
<p>En este apartado las cosas están más o menos igual. En OpenCms 7 tenemos el Workspace desde donde podremos crear los contenidos y administrarlos con una apariencia similar a la de un sistema operativo. Para generar la interfaz del portal, podemos, de manera opcional, instalar y usar el Template Two, configurando esta plantilla podremos generar, de forma ágil, el skin de nuestro portal. En el otro lado tenemos los themes de Drupal, con ellos podemos modificar, con unos pocos golpes de ratón, completamente la apariencia de nuestro portal, sin existir una ruptura abrupta en la interfaz como ocurre con OpenCms, además estos themes, al igual que el Template Two, son totalmente transparentes con otras características como las URL´s amigables. El problema existiria si decidiéramos hacer uso de nuestras propias templates, en ese caso tendremos que programas nosotros esas características.</p>
<p>Horizontalmente a estos existen otros problemas, como por ejemplo la necesidad de tener un OpenCms para poder generar los instalables de los módulos a partir de los fuentes del repositorio, por suerte, siempre hay <a href="http://amunizmartin.wordpress.com/2008/11/06/modulos-opencms-y-maven/">quien</a> se preocupa de poner remedio a este tipo de eventualidades.</p>
<blockquote><p>Nada es verdad ni es mentira; todo es según el color del cristal con que se mira. Ramón de Campoamor.</p></blockquote>
Posted in Desarrollo Tagged: Drupal, Java, OpenCms, PHP <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/angellazaro.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/angellazaro.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/angellazaro.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/angellazaro.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/angellazaro.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/angellazaro.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/angellazaro.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/angellazaro.wordpress.com/90/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/angellazaro.wordpress.com/90/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/angellazaro.wordpress.com/90/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=90&subd=angellazaro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://angellazaro.wordpress.com/2008/11/13/gestion-de-contenidos-opencms-7-y-drupal-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">angellazaro</media:title>
		</media:content>
	</item>
		<item>
		<title>Documentación de proyectos</title>
		<link>http://angellazaro.wordpress.com/2008/09/16/documentacion-de-proyectos/</link>
		<comments>http://angellazaro.wordpress.com/2008/09/16/documentacion-de-proyectos/#comments</comments>
		<pubDate>Tue, 16 Sep 2008 23:51:48 +0000</pubDate>
		<dc:creator>Ángel Cristóbal Lázaro Ríos</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Docbook]]></category>
		<category><![CDATA[PHPDoc]]></category>

		<guid isPermaLink="false">http://angellazaro.wordpress.com/?p=62</guid>
		<description><![CDATA[El proceso de documetación (históricamente vinculado al perfil del becario) de un proyecto aunque es en cierta medida un proceso automatizable, gracias a herramientas como PHPDoc, Javadoc, etc, es una tarea que se antoja tediosa y larga. Si a esta ecuación le añadimos variables como la extensión de la documentación, necesidad de distribuir la documentación [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=62&subd=angellazaro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>El proceso de documetación (históricamente vinculado al perfil del becario) de un proyecto aunque es en cierta medida un proceso automatizable, gracias a herramientas como <a href="http://www.phpdoc.org/">PHPDoc</a>, <a href="http://es.wikipedia.org/wiki/Javadoc">Javadoc</a>, etc, es una tarea que se antoja tediosa y larga. Si a esta ecuación le añadimos variables como la extensión de la documentación, necesidad de distribuir la documentación en distintos formatos (html, pdf, etc), con distintos estilos y a través de distintos canales la cosa comienza a tomar un cariz oscuro.</p>
<p>Con este escenario en mente y sabiendo la relación 1 a 1 que existe entre las entidades Tiempo y Dinero es cuando comienza a tomar fuerza el uso de herramientas como <a href="http://www.oasis-open.org/docbook/">Docbook</a>, entre las ventajas que esta herramienta nos proporciona podemos citar algunas como:</p>
<ul>
<li>Nos permite abstraernos del aspecto y centrarnos en el contenido.</li>
<li>Estilos personalizables.</li>
<li>Producción de contenidos en distintos formatos partiendo de un mismo fuente.</li>
</ul>
<p>Por supuesto también tiene algunas desventajas, como:</p>
<ul>
<li>Debemos superar la curva de aprendizaje que toda nueva tecnología nos impone.</li>
<li>Poca madurez en muchas de las herramientas libres.</li>
</ul>
<p>A continuación presento un esquema que ilustra el funcionamiento de Docbook</p>
<div class="wp-caption aligncenter" style="width: 416px"><img title="docbook-schema" src="http://lcaballero.files.wordpress.com/2007/07/docbook-xml-grande.png?w=406&#038;h=232" alt="Esquema de funcionamiento de docbook" width="406" height="232" /><p class="wp-caption-text">Esquema de funcionamiento de docbook</p></div>
<p>La instalación de dockbook junto con los procesadores XSLT es sencilla, basta con seguir los siguientes pasos:</p>
<p>Instalamos los esquemas de docbook y las xsl</p>
<ol>
<li>apt-get install docbook-xml</li>
<li>apt-get install docbook-xsl</li>
</ol>
<p>Instalamos el procesador XSLT</p>
<ol>
<li>apt-get install xmlto</li>
</ol>
<p>Instalamos el generador para pdf</p>
<ol>
<li>wget http://www.uniontransit.com/apache/xmlgraphics/fop/fop-0.94-bin-jdk1.4.tar.gz</li>
<li>tar -xvzf fop-0.94-bin-jdk1.4.tar.gz</li>
<li>mv fop-0.94 /opt</li>
<li>ln -s fop-0.94 fop</li>
</ol>
<p>Ahora si queremos, por ejemplo, generar un documento html,partiendo de un documento test.xml que sigue el formato docbook, haremos lo siguiente:</p>
<ol>
<li>xsltproc -o test.html /usr/share/xml/docbook/stylesheet/nwalsh/html/docbook.xsl test.xml</li>
</ol>
<p>Si en vez de un documento html queremos generar un pdf haremos esto otro:</p>
<ol>
<li>xsltproc -o test.html /usr/share/xml/docbook/stylesheet/nwalsh/fo/docbook.xsl test.xml</li>
<li>/opt/fop/fop test.fo -pdf test.pdf</li>
</ol>
<blockquote>
<div class="q">
<div class="a"><strong>Invertir en conocimientos produce siempre los mejores beneficios.</strong> Benjamin Franklin</div>
</div>
</blockquote>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/angellazaro.wordpress.com/62/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/angellazaro.wordpress.com/62/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/angellazaro.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/angellazaro.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/angellazaro.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/angellazaro.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/angellazaro.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/angellazaro.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/angellazaro.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/angellazaro.wordpress.com/62/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/angellazaro.wordpress.com/62/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/angellazaro.wordpress.com/62/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=62&subd=angellazaro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://angellazaro.wordpress.com/2008/09/16/documentacion-de-proyectos/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">angellazaro</media:title>
		</media:content>

		<media:content url="http://lcaballero.files.wordpress.com/2007/07/docbook-xml-grande.png" medium="image">
			<media:title type="html">docbook-schema</media:title>
		</media:content>
	</item>
		<item>
		<title>Configuración de un entorno de depuración para PHP</title>
		<link>http://angellazaro.wordpress.com/2008/08/26/configuracion-de-un-entorno-de-depuracion-para-php/</link>
		<comments>http://angellazaro.wordpress.com/2008/08/26/configuracion-de-un-entorno-de-depuracion-para-php/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 21:43:22 +0000</pubDate>
		<dc:creator>Ángel Cristóbal Lázaro Ríos</dc:creator>
				<category><![CDATA[Desarrollo]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Eclipse]]></category>
		<category><![CDATA[PDT]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Wamp]]></category>
		<category><![CDATA[Xdebug]]></category>

		<guid isPermaLink="false">http://angellazaro.wordpress.com/?p=19</guid>
		<description><![CDATA[Con este primer post comenzaremos a sentar las bases necesarias para conseguir montar un entorno de desarrollo e integración continua para proyectos realizados con tecnología PHP.
Los elementos que vamos a necesitar serán los siguientes:

EclipsePDT, es un IDE Eclipse que trae instalado los plugins necesarios para desarrollar aplicaciones con tecnología PHP (necesitaremos tener instalado JRE1.5).

WampServer permite [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=19&subd=angellazaro&ref=&feed=1" />]]></description>
			<content:encoded><![CDATA[<div class='snap_preview'><br /><p>Con este primer post comenzaremos a sentar las bases necesarias para conseguir montar un entorno de desarrollo e integración continua para proyectos realizados con tecnología PHP.</p>
<p>Los elementos que vamos a necesitar serán los siguientes:</p>
<p><a href="http://www.eclipse.org/downloads/download.php?file=/tools/pdt/downloads/drops/R20080603/all-in-one/pdt-all-in-one-R20080603-win32.zip"><img class="alignleft size-thumbnail wp-image-20" src="http://angellazaro.files.wordpress.com/2008/08/eclipse_icon.jpg?w=85&#038;h=50" alt="" width="85" height="50" /></a></p>
<p>EclipsePDT, es un IDE Eclipse que trae instalado los plugins necesarios para desarrollar aplicaciones con tecnología PHP (necesitaremos tener instalado JRE1.5).</p>
<p><a href="http://sourceforge.net/project/downloading.php?groupname=wampserver&amp;filename=WampServer2.0c.exe&amp;use_mirror=dfn"><img class="alignleft size-full wp-image-22" src="http://angellazaro.files.wordpress.com/2008/08/wamp_icon.jpg?w=85&#038;h=50" alt="" width="85" height="50" /></a></p>
<p>WampServer permite instalar PHP, Apache y MySQL sobre un sistema operativo Windows. A partir de la versión 2.0 WampServer ofrece, además, la posibilidad de cambiar las versiones de los distintos componentes.</p>
<p><a href="http://www.xdebug.org/link.php?url=xdebug203-52-win"><img class="alignleft size-thumbnail wp-image-21" src="http://angellazaro.files.wordpress.com/2008/08/xdebug_icon.png?w=85&#038;h=50" alt="" width="85" height="50" /></a></p>
<p>Xdebug es una extensión PHP que permite la depuración de scripts PHP ofreciéndonos una gran cantidad de información útil.</p>
<p><span id="more-19"></span><br />
El primer paso que daremos será llevar a cabo la instalación del servidor WampServer. Una vez terminado el proceso de instalación podremos comprobar su correcto funcionamiento accediendo a &#8220;http://localhost/&#8221;.</p>
<p><a href="http://angellazaro.files.wordpress.com/2008/08/001.png"><img class="alignnone size-medium wp-image-28" src="http://angellazaro.files.wordpress.com/2008/08/001.png?w=300&#038;h=183" alt="" width="300" height="183" /></a></p>
<p>Una vez hecho esto pasaremos a instalar Xdebug en nuestra máquina, para ello copiaremos la extensión Xdebug en el directorio de extensiones de PHP, en nuestro caso será &#8220;&lt;WAMP_HOME&gt;\wamp\bin\php\phpX.Y.Z\ext&#8221; (debemos tener cuidado de descargar la versión de Xdebug correspondiente con la versión de PHP que hemos instalando), opcionalmente, le podremos cambiar el nombre a &#8220;php_xdebug.dll&#8221; con el fin de facilitarnos los siguientes pasos</p>
<p>El siguiente paso será informar a WampServer que tiene disponible la extensión Xdebug para permitir la depuración, esto lo haremos accediendo al fichero de configuración &#8220;php.ini&#8221; a través de la consola de WampServer y añadiendo el siguiente fragmento de código al final de dicho fichero</p>
<p><!--more-->zend_extension_ts=&#8221;&lt;WAMP_HOME&gt;\wamp\bin\php\phpX.Y.Z\ext\php_xdebug.dll&#8221;<br />
xdebug.remote_enable=On<br />
xdebug.remote_host=&#8221;localhost&#8221;<br />
xdebug.remote_port=9000<br />
xdebug.remote_handler=&#8221;dbgp&#8221;</p>
<p><!--more--></p>
<p>Grabamos los cambios y reiniciamos el servidor, si hemos realizado todos los pasos correctamente de una imagen como la siguiente en &#8220;http://localhost/?phpinfo&#8221;</p>
<p><img class="aligncenter size-medium wp-image-26" src="http://angellazaro.files.wordpress.com/2008/08/003.png?w=300&#038;h=42" alt="" width="300" height="42" /><br />
pasaremos a tener una como esta otra, en la que podemos observar cómo tenemos disponible la extensión de depuración Xdebug</p>
<p><img class="aligncenter size-medium wp-image-25" src="http://angellazaro.files.wordpress.com/2008/08/004.png?w=300&#038;h=42" alt="" width="300" height="42" /></p>
<p>Ahora sólo nos queda indicarle a EclipsePDT qué servidor tiene que usar para llevar a cabo la depuración , para ello abriremos EclipsePDT y creamos un nuevo proyecto PHP vacío al que llamaremos Test y crearemos un nuevo fichero &#8220;index.php&#8221; con un código de prueba.</p>
<p>A continuación nos iremos a &#8220;Window -&gt; Preferences&#8230;&#8221; y expandiremos el árbol &#8220;PHP/Debug&#8221; y le indicaremos a EclipsePDT que debe usar la extensión de depuración Xdebug.</p>
<p>También deberemos crear un perfil de depuración para nuestro proyecto, para ello, haremos click derecho sobre el proyecto y selecionaremos &#8220;Debug As -&gt; Open Debug Dialog &#8230;&#8221; crearemos una nueva configuración sobre &#8220;PHP Web Page&#8221; que llamaremos &#8220;Test_Configuration&#8221;, en File seleccionaremos &#8220;/Test/index.php&#8221; y pasamos a la siguiente pestaña, &#8220;Advanced&#8221;.</p>
<p>Tras pulsar sobre &#8220;Apply&#8221; saltará inmeditamente el navegador predefinido intentando acceder a &#8220;http://localhost/Test/index.php&#8221; devolviéndonos un error 404, esto se debe a que no tenemos dado de alta el proyecto, esto lo haremos fácilmente gracias a la gestión de los alias que WampServer nos ofrece.</p>
<p>Seleccionaremos &#8220;Apache -&gt; Alias directories -&gt; + Add an alias&#8221; en la consola de WampServer, esto nos mostrará una ventana en la que nos solicitará la dirección tanto lógica como física</p>
<p><a href="http://angellazaro.files.wordpress.com/2008/08/008.png"><img class="alignnone size-medium wp-image-31" src="http://angellazaro.files.wordpress.com/2008/08/008.png?w=300&#038;h=138" alt="" width="300" height="138" /></a></p>
<p>Tras proporcionarle los datos necesarios volveremos a lanzar el depurador y obtendremos el depurador funcionando correctamente para poder trabajar</p>
<p><a href="http://angellazaro.files.wordpress.com/2008/08/009.png"><img class="alignnone size-medium wp-image-32" src="http://angellazaro.files.wordpress.com/2008/08/009.png?w=300&#038;h=216" alt="" width="300" height="216" /></a></p>
<blockquote><p>Para correr primero debemos aprender a andar.</p></blockquote>
<img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/angellazaro.wordpress.com/19/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/angellazaro.wordpress.com/19/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/angellazaro.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/angellazaro.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/angellazaro.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/angellazaro.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/angellazaro.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/angellazaro.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/angellazaro.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/angellazaro.wordpress.com/19/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/angellazaro.wordpress.com/19/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/angellazaro.wordpress.com/19/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=angellazaro.wordpress.com&blog=4544954&post=19&subd=angellazaro&ref=&feed=1" /></div>]]></content:encoded>
			<wfw:commentRss>http://angellazaro.wordpress.com/2008/08/26/configuracion-de-un-entorno-de-depuracion-para-php/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">angellazaro</media:title>
		</media:content>

		<media:content url="http://angellazaro.files.wordpress.com/2008/08/eclipse_icon.jpg?w=128" medium="image" />

		<media:content url="http://angellazaro.files.wordpress.com/2008/08/wamp_icon.jpg" medium="image" />

		<media:content url="http://angellazaro.files.wordpress.com/2008/08/xdebug_icon.png?w=128" medium="image" />

		<media:content url="http://angellazaro.files.wordpress.com/2008/08/001.png?w=300" medium="image" />

		<media:content url="http://angellazaro.files.wordpress.com/2008/08/003.png?w=300" medium="image" />

		<media:content url="http://angellazaro.files.wordpress.com/2008/08/004.png?w=300" medium="image" />

		<media:content url="http://angellazaro.files.wordpress.com/2008/08/008.png?w=300" medium="image" />

		<media:content url="http://angellazaro.files.wordpress.com/2008/08/009.png?w=300" medium="image" />
	</item>
	</channel>
</rss>