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

<channel>
	<title>zenphp :: blog &#187; Programación Orientada a Aspectos</title>
	<atom:link href="http://blog.zenphp.es/tag/programacion-orientada-a-aspectos/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.zenphp.es</link>
	<description>Escribre tu aplicación como si fuera la última que escribieras</description>
	<lastBuildDate>Tue, 02 Feb 2010 09:03:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>La importancia del profiler en PHP</title>
		<link>http://blog.zenphp.es/2008/01/20/la-importancia-del-profiler-en-php/</link>
		<comments>http://blog.zenphp.es/2008/01/20/la-importancia-del-profiler-en-php/#comments</comments>
		<pubDate>Sun, 20 Jan 2008 14:46:51 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[Documentación]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Aspecto]]></category>
		<category><![CDATA[POA]]></category>
		<category><![CDATA[Programación Orientada a Aspectos]]></category>
		<category><![CDATA[XAD]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[analizador]]></category>
		<category><![CDATA[compilador]]></category>
		<category><![CDATA[generador de código]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[profiler]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/01/20/la-importancia-del-profiler-en-php/</guid>
		<description><![CDATA[Sin duda, las herramientas &#8220;IDE&#8221; o entornos visuales para la edición de código fuente aumentan muchísimo la producción.
Hoy en día es muy necesario que dicha aplicación disponga de una interfaz amigable y de herramientas  super importantes a la hora de la verdad, creando un proyecto si no sabemos qué está pasando con nuestro código,no [...]]]></description>
			<content:encoded><![CDATA[<p>Sin duda, las herramientas &#8220;IDE&#8221; o entornos visuales para la edición de código fuente aumentan muchísimo la producción.<br />
Hoy en día es muy necesario que dicha aplicación disponga de una interfaz amigable y de herramientas  super importantes a la hora de la verdad, creando un proyecto si no sabemos qué está pasando con nuestro código,no sabremos si hace lo que se espera de él cuando lo escribimos y previamente diseñamos&#8230;</p>
<p><a href="/img/profiler.gif" title="Ver captura del profiler en Windows" target="_blank"><img src="/img/profiler.gif" height="442" width="418" /></a></p>
<p>Así pues, es imprescindible disponer de un profiler que nos informe por qué y qué es lo que hace que nuestra aplicación vaya demasiado lenta o se cuelgue; e incluso nos ayuda a depurar todo el proyecto de una forma a simple vista sencilla.</p>
<p>En el ejemplo podemos ver que el compilador lleva mucho tiempo en ejecutar la línea 29 de la clase que añade el contenido especificado en nuestro XML de <a href="http://blog.zenphp.es/2008/01/19/compilador-y-generador-terminados/">aspectos </a>a un fichero .PHP. Si leemos la línea veremos que lo que se hace es una llamada a <a href="http://es2.php.net/implode">implode </a>: construir una cadena a partir de un array de contenidos. Es bien sabido que éste lenguaje es muy ineficiente cuando se trata de operar con cadenas, sobre todo en las concatenaciones&#8230;<br />
El resto de llamadas ineficientes son básicamente la lectura de ficheros,por lo que ya sabemos que debemos intentar realizar el menor número de accesos a disco, éstos son, llamadas a <a href="http://es2.php.net/manual/es/function.require.php" class="function">require()</a>,    <a href="http://es2.php.net/manual/es/function.require-once.php" class="function">require_once()</a>,    <a href="http://es2.php.net/manual/es/function.include-once.php" class="function">include_once()</a>, <a href="http://es2.php.net/manual/es/function.readfile.php" class="function">readfile()</a>,    <a href="http://es2.php.net/manual/es/function.virtual.php" class="function">virtual()</a>,  <a href="http://es2.php.net/manual/es/ini.core.php#ini.include-path" class="link">include_path</a>, <a href="http://es2.php.net/manual/es/function.fopen.php">fopen</a>, etc&#8230;Ahora deben ser precedidas por funciones de comprobación de existencia de funciones,clases y ficheros&#8230; <img src='http://blog.zenphp.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Por lo tanto ya sabemos donde tenemos que centrar nuestra atención a la hora de optimizar el código.  <img src='http://blog.zenphp.es/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=34&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_34"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/01/20/la-importancia-del-profiler-en-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compilador y generador terminados</title>
		<link>http://blog.zenphp.es/2008/01/19/compilador-y-generador-terminados/</link>
		<comments>http://blog.zenphp.es/2008/01/19/compilador-y-generador-terminados/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 22:56:39 +0000</pubDate>
		<dc:creator>juaxix</dc:creator>
				<category><![CDATA[Documentación]]></category>
		<category><![CDATA[Funcionalidades]]></category>
		<category><![CDATA[Progreso]]></category>
		<category><![CDATA[POA]]></category>
		<category><![CDATA[Paradigma]]></category>
		<category><![CDATA[Programación Orientada a Aspectos]]></category>
		<category><![CDATA[analizador sintáctico]]></category>
		<category><![CDATA[compilador]]></category>
		<category><![CDATA[generador]]></category>
		<category><![CDATA[generador de código]]></category>

		<guid isPermaLink="false">http://blog.zenphp.es/2008/01/19/compilador-y-generador-terminados/</guid>
		<description><![CDATA[He dejado de estudiar Matemáticas por un día justo la semana del examen&#8230;,pero no podía dejar de pensar en que podría acabar el compilador basado en el Paradigma orientado a Aspectos antes de esta semana!&#8230;sin él, el generador no es nadie  
Me ha llevado mucho porque el analizador sintáctico me estaba dando problemas y [...]]]></description>
			<content:encoded><![CDATA[<p>He dejado de estudiar Matemáticas por un día justo la semana del examen&#8230;,pero no podía dejar de pensar en que podría acabar el <strong>compilador </strong>basado en el <a href="https://forja.rediris.es/docman/view.php/252/401/Introducci%C3%B3n%20a%20la%20orientaci%C3%B3n%20a%20aspectos.pdf">Paradigma orientado a Aspectos</a> antes de esta semana!&#8230;sin él, el generador no es nadie <img src='http://blog.zenphp.es/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Me ha llevado mucho porque el analizador sintáctico me estaba dando problemas y no sabía por qué no me añadía los <a href="http://en.wikipedia.org/wiki/Pointcut" title="¿Qué son puntos de corte en la POA?" target="_blank">puntos de corte</a> automáticos a la clase del fichero original ,al final ,después de mucho depurar resultó que sólo era un constructor mal declarado&#8230;¡qué típico! jaja <img src='http://blog.zenphp.es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>He añadido un <a href="https://forja.rediris.es/docman/view.php/252/434/generador_codigo_zenphp.pdf">documento</a> explicando la idea y acabo de terminar el compilador con &#8220;pica código&#8221; incluido <img src='http://blog.zenphp.es/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  ,si,si&#8230;.pica código&#8230;por tí, jejeje&#8230;, ahora los proyectos web se puede crear con un par de definiciones en XML (XAD) e incluso montar un repositorio de clases,módulos y funcionalidades con todo lo que una web necesita.</p>
<p>Por ejemplo si necesitáramos una cesta de la compra bastaría con descargarnos, como en <a href="http://manual.cakephp.org/appendix/blog_tutorial" title="Ver CakePHP" target="_blank">CakePHP</a>, el <em>módulo</em>, sin embargo aquí se añaden muchas <strong>más </strong>funcionalidades porque se permite cambiar (antes de generar) el código,todo lo que tenga nuestro proyecto de &#8220;extra&#8221;, i.e.: campos, funciones que necesitemos en cualquier lenguaje,etc&#8230;</p>
<p>Todo se pueden añadir en el XML como definiciones y se le pasa a zenphp para que genere las clases del proyecto, que cargará los orígenes de las definiciones y creará los ficheros.</p>
<p>Dejo una captura del compilador y generador funcionando.</p>
<p><a href="/img/generador_completo.png" title="Abrir captura" target="_blank"><img src="/img/generador_completo.png" align="absmiddle" border="0" height="261" width="347" /></a></p>
<p>Eso es todo por hoy, si quieres saber puedes leer más sobre <a href="http://es.wikipedia.org/wiki/Programaci%C3%B3n_Orientada_a_Aspectos" title="¿Qué es la POA?" target="_blank">Programación Orientada a Aspectos</a>.</p>
<span class="akst_link"><a href="http://blog.zenphp.es/?p=33&amp;akst_action=share-this"  title="E-mail this, post to del.icio.us, etc." id="akst_link_33"  class="akst_share_link">Compártelo</a>
</span>]]></content:encoded>
			<wfw:commentRss>http://blog.zenphp.es/2008/01/19/compilador-y-generador-terminados/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
