<?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>Backtheweb</title>
	<atom:link href="http://www.backtheweb.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.backtheweb.com</link>
	<description>Notas y recursos de un desarrollador web</description>
	<lastBuildDate>Wed, 21 Jul 2010 21:59:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Instalar APC en Snow Leopard</title>
		<link>http://www.backtheweb.com/php/instalar-apc-en-snow-leopard.html</link>
		<comments>http://www.backtheweb.com/php/instalar-apc-en-snow-leopard.html#comments</comments>
		<pubDate>Wed, 21 Jul 2010 00:25:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[doctrine]]></category>
		<category><![CDATA[Snow Leopa]]></category>

		<guid isPermaLink="false">http://www.backtheweb.com/?p=368</guid>
		<description><![CDATA[Actualmente estoy integrando Doctrine 2 con Zend Framework.
A la hora de executar en la terminal doctrine orm:validate-schema me encontraba con el siguiente error:
PHP Fatal error:  Call to undefined function Doctrine\Common\Cache\apc_fetch() in /vhosts/doctrine/library/Doctrine/Common/Cache/ApcCache.php on line 59
Esto sucede porque no tengo instalado el APC.
Para instalar correctamente el APC se han de indicar en Snow Leopard unos [...]]]></description>
			<content:encoded><![CDATA[<p>Actualmente estoy integrando <strong>Doctrine 2</strong> con<strong> Zend Framework</strong>.</p>
<p>A la hora de executar en la terminal <code>doctrine orm:validate-schema</code> me encontraba con el siguiente error:</p>
<p><code>PHP Fatal error:  Call to undefined function Doctrine\Common\Cache\apc_fetch() in /vhosts/doctrine/library/Doctrine/Common/Cache/ApcCache.php on line 59</code></p>
<p>Esto sucede porque no tengo instalado el <strong>APC</strong>.</p>
<p>Para instalar correctamente el <strong>APC</strong> se han de indicar en <strong>Snow Leopard</strong> unos flags para que el <strong>APC</strong> se compile con la arquitectura adecuada</p>
<pre><code>wget http://pecl.php.net/get/APC-3.1.3p1.tgz
tar -xvf APC-3.1.3p1.tgz
cd APC-3.1.3p1
/usr/local/zend/bin/phpize

MACOSX_DEPLOYMENT_TARGET=10.6
CFLAGS="-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp"
CCFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
CXXFLAGS="-arch i386 -arch x86_64 -g -Os -pipe"
LDFLAGS="-arch i386 -arch x86_64 -bind_at_load"
export CFLAGS CXXFLAGS LDFLAGS CCFLAGS MACOSX_DEPLOYMENT_TARGET

./configure --enable-apc-mmap --with-apxs=/usr/sbin/apxs --with-php-config=/usr/local/zend/bin/php-config

make
sudo make install
</code></pre>
<p>Luego insertamos en el <em>php.ini</em></p>
<pre><code>extension=apc.so

apc.enabled=1
apc.shm_segments=1
apc.shm_size=128
apc.ttl=7200
apc.user_ttl=7200
apc.num_files_hint=1024
apc.mmap_file_mask=/tmp/apc.XXXXXX
apc.enable_cli=1</code></pre>
<p>Reinicia el <em>apache</em> y revisa la configuración del <strong>APC</strong> con <code>phpinfo()</code>, verás que se ha compilado correctamente.</p>
<p><strong>Actualización</strong>: Si al recargar las paginas web se os queda la página en blanco mirar los logs de php. Si os aparece:<br />
<code> Module 'apc' already loaded in Unknown on line 0</code> comentar la linea <code>extension=apc.so</code> poniendo un &#8220;;&#8221; (punto y comoa) delante.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.backtheweb.com/php/instalar-apc-en-snow-leopard.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox 3.6 falla más que una escopeta de feria</title>
		<link>http://www.backtheweb.com/general/firefox-3-6-falla-mas-que-una-escopeta-de-feria.html</link>
		<comments>http://www.backtheweb.com/general/firefox-3-6-falla-mas-que-una-escopeta-de-feria.html#comments</comments>
		<pubDate>Tue, 09 Feb 2010 20:48:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.backtheweb.com/?p=359</guid>
		<description><![CDATA[
Lo cierto es que no se si se trata de Firefox 3.6 o de firebug 1.5.0 o de algun otro plugin como el HTML Validator 0.8.6.1 pero la cosa cada día va a peor. Con Firefox 3.5 tampoco iba demasiado fino el tema. Me recomendaron hacer un downgrade a Firebug 1.4.0. y tampoco ha solucionado [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-366" title="Firefox falla más que una escopeta de feria" src="http://www.backtheweb.com/wp-content/uploads/2010/02/firefox_falla_mas_que_una_escopeta_de_feria.jpg" alt="Firefox falla más que una escopeta de feria" width="480" height="242" /></p>
<p>Lo cierto es que no se si se trata de <strong>Firefox 3.6</strong> o de <strong>firebug 1.5.0</strong> o de algun otro plugin como el <strong>HTML Validator 0.8.6.1</strong> pero la cosa cada día va a peor. Con <strong>Firefox 3.5</strong> tampoco iba demasiado fino el tema. Me recomendaron hacer un <em>downgrade</em> a <strong>Firebug 1.4.0</strong>. y tampoco ha solucionado nada.</p>
<p>Los principales problemas que tengo són:</p>
<ul>
<li><strong>Firefox</strong> se cuelga más de lo habitual, especialemente cuando me levanto y vuelvo al cabo de un rato, es decir en periodos de inactividad.</li>
<li><strong>Firebug</strong> no es capaz de desplegarme el inspector, se queda en el <em>body</em> o en algun <em>div</em>. Por lo que he de reinicar <strong>Firefox</strong>.</li>
</ul>
<p>Psansaba que podría ser algo de mi Mac, pero me pasa en varios Mac&#8217;s (los de casa y el del trabajo). Pensaba que seria algo de los Mac&#8217;s, pero colegas del trabjo que usan windows estan igual.</p>
<p>A todo esto&#8230; pues le estoy dando una oportunidad a <strong>Opera</strong> que trae por defecto herramientas de debug muy buenas&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.backtheweb.com/general/firefox-3-6-falla-mas-que-una-escopeta-de-feria.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google translator, nuevas funcionalidades</title>
		<link>http://www.backtheweb.com/general/google-translator-nuevas-funcionalidades.html</link>
		<comments>http://www.backtheweb.com/general/google-translator-nuevas-funcionalidades.html#comments</comments>
		<pubDate>Fri, 20 Nov 2009 23:40:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.backtheweb.com/?p=352</guid>
		<description><![CDATA[Google Translator es una de aquellas pequeñas herramientas que todo el mundo conoce y que a la vez aveces pasa como por inatvertida, tal vez por existen herramientas tambén gratuitas y tal vez más potentes como wordreference.
Pero lo curioso de Google Translator es su evolución y como con el tiempo y sin avisar se ha [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Google Translator </strong>es una de aquellas pequeñas herramientas que todo el mundo conoce y que a la vez aveces pasa como por inatvertida, tal vez por existen herramientas tambén gratuitas y tal vez más potentes como <em>wordreference</em>.</p>
<p>Pero lo curioso de <strong>Google Translator</strong> es su evolución y como con el tiempo y sin avisar se ha mejorado. Parece un cmapo de pruebas, muchas veces me ha pasado que no he usado la aplicación y al entrar pienso: &#8220;¡C***! Otra vez&#8230;. ¡la han vuelo ha cambiar!&#8221;. Y aunque no siempre la aciertan con los cambios (ponen botones personalizados, ahora los sacan, ahora ponen una lista&#8230; ) Habria estado bié hacer una captura de pantalla de cada una delas versiones que se han visto&#8230; pero la mejor sin duda es la actual, epero que esta vez duré mucho porque es casi un juguete con el que puedes matar el tiempo traduciendo palabras.</p>
<p>Entre las nuevas funcionalidades que podemos ver (almenos las descubreo hoy) es que si la palabra o frase traducida es en ingles, podemos pedirle a <strong>google</strong> que la lea, por fin dejaremos de decir &#8220;bug&#8221; y diremos &#8220;bag&#8221; (o algo así).</p>
<p>Pero lo que más me ha gustado (al menos lo he descubierto hoy) es que si traducimos una palabra al japonés o chino, a parte de mostranos la palabra en chino o japonés podemos hacer que nos muestre la palabra en formato romanizado, es decir en nuestro albafeto por lo que además podremos leer en chino o japonés.</p>
<p>Por otra parte, tambén nos ofrece un diccionario detallado en palabras sueltas, si se trata de un nombre o verbo&#8230; y ahora me surge la duda ¿siempre ha funcionado con peticiones AJAX? Esto no creo que sea nuevo, pero ahora en lugar de mostrar los resultados a la derecha los muesrtra debajo.</p>
<p>En fin lo que decía todo un juguete para perder el rato escuchando palabritas en inglés o mirando como se dice en japonés 私はスリープ状態に入る (<em>watashi wa surīpujōtai ni hairu</em>) .</p>
]]></content:encoded>
			<wfw:commentRss>http://www.backtheweb.com/general/google-translator-nuevas-funcionalidades.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zend Form Decorator, parte I</title>
		<link>http://www.backtheweb.com/php/zend-form-decorator-parte-i.html</link>
		<comments>http://www.backtheweb.com/php/zend-form-decorator-parte-i.html#comments</comments>
		<pubDate>Fri, 20 Nov 2009 23:05:08 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.backtheweb.com/?p=347</guid>
		<description><![CDATA[Los formularios de Zend Framework es una de las cosas que más me gustan del framework porque te permite validar, procesar y modificar los formularios de una forma muy rápida y limpia. No obstante, de entrada queda todo muy limitado por la forma de presentar los datos con una lista de definición (dl). Aveces soy [...]]]></description>
			<content:encoded><![CDATA[<p>Los <strong>formularios</strong> de <strong>Zend Framework</strong> es una de las cosas que más me gustan del <em>framework</em> porque te permite validar, procesar y modificar los formularios de una forma muy rápida y limpia. No obstante, de entrada queda todo muy limitado por la forma de presentar los datos con una <em>lista de definición (dl)</em>. Aveces soy muy purista, y usar <code>dl</code>, <code>dt</code> y <code>dd</code> para maquetar un formulario no lo encuentro nada semántico (y tampoco con li).</p>
<p>La primera necesidad que me surge es cambiar el <code>dl</code> por un <code>div</code> y los <code>dt</code>&#8217;s y <code>dd</code>&#8217;s por <code>p</code>&#8217;s del <strong>formulario</strong>:</p>
<pre><code>$form-&gt;clearDecorators()
	-&gt;addDecorator('FormElements')
	-&gt;addDecorator('HtmlTag', 	array('tag' =&gt; '</code>', 'class' =&gt; 'zend_form'))
	-&gt;addDecorator('Form')
	-&gt;setElementDecorators(array(
		array('ViewHelper'),
		array('Errors'),
		array('Description', 	array('tag' =&gt; 'span', 'class' =&gt; 'element-description')),
		array('Label', 			array('separator' =&gt; ' ')),
		array('HtmlTag', 		array('tag' =&gt; 'p', 'class' =&gt; 'element-group')
	),
));</pre>
<p><span id="more-347"></span>De esta forma todos los elementos del <strong>formulario</strong> estarán construidos con una <code>p</code> y con la clase <code>element-group</code>, las ayudas descriptivas estaran dentro de la misma <code>p</code> pero dentro de un <code>span</code> y con la clase <code>element-group-description</code></p>
<p>El segundo aspecto es hacer que el <code>submit</code> no tenga <code>label</code>, para eso basta con no ponerlo, pero al hacerlo con listas de definición nos crea un <code>dt</code> vacío. pero además quiero que disponga de un <em>link</em> de &#8220;volver&#8221; o &#8220;cancelar&#8221;:</p>
<pre><code>$form-&gt;addElement('submit', 'submit', array(
	'ignore'   		=&gt; true,
	'description'	=&gt; '&lt;a href=\"#\"&gt;Cancel&lt;/a&gt;',
	'decorators' 	=&gt; array(
		array('ViewHelper'),
		array('Description', 	array('escape' =&gt; false, 'tag' =&gt; 'span', 'class'=&gt;'element-canel-link')),
		array('HtmlTag', 		array('tag' =&gt; 'p', 'class'=&gt;'submit-group'))
	)
));</code></pre>
<p>Aquí lo importante son los valores que pasamos a la array <code>Description</code> y lo mismo lo podemos hacer para un <code>input</code>.</p>
<pre><code>$form-&gt;addElement('password', 'credential', array(
	'label'      	=&gt; 'Password',
	'required'   	=&gt; true,
	'filters'    =&gt; array('StringTrim', 'StripTags'),
	'description'	=&gt; '&lt;a href=\"#\"&gt;Remember password&lt;/a&gt;',
	'decorators' 	=&gt; array(
		array('ViewHelper'),
		array('Description', 	array('escape' =&gt; false, 'tag' =&gt; 'span', 'class'=&gt;'element-description')),
		array('Label', 			array('separator'=&gt;' ')),
		array('Errors'),
		array('HtmlTag', 		array('tag' =&gt; 'p', 'class'=&gt;'element-group'))
	)
));</code></pre>
<p>Otro gran problema que se presenta con <strong>Zend Form</strong> es que al imprimir un <em>checkbox</em> lo pone después del <code>label</code> y eso es poco usable.</p>
<pre><code>$form-&gt;addElement('checkbox', 'rememberme', array(
	'label'     =&gt; 'Remember me',
	'value'		=&gt; '1',
	'checked' 	=&gt; false,
	'decorators' 	=&gt; array(
		array('ViewHelper'),
		array('Label', 			array('placement' =&gt; 'APPEND')),
		array('Errors'),
		array('HtmlTag', 		array('tag' =&gt; 'p', 'class'=&gt;'element-group'))
	)
));</code></pre>
<p>(Creo que aquí hay un bug, además del <code>checbox</code> me ha añadido un <code>input hidden</code>, pero no debería darnos muchos problemas, espero))</p>
<p>De esta forma my clase formulario queda así:</p>
<pre><code>class Default_Form_Login extends Zend_Form
{
    /**
     * init()
     *
     * @see    http://framework.zend.com/manual/en/zend.form.html
     * @return void
     */
    public function init()
    {
        // Set the method for the display form to POST
        $this-&gt;setMethod('post');
        $this-&gt;setAction('/auth/login/');
        $this-&gt;setAttrib('id', 'loginForm');

        $this-&gt;clearDecorators()
        	-&gt;addDecorator('FormElements')
         	-&gt;addDecorator('HtmlTag', array('tag' =&gt; '
</code>
<div>', 'class' =&gt; 'zend_form'))
         	-&gt;addDecorator('Form')
        	-&gt;setElementDecorators(array(
	            array('ViewHelper'),
	            array('Errors'),
	            array('Description',	array('tag' =&gt; 'span', 'class' =&gt; 'element-description')),
	            array('Label', 			array('separator' =&gt; ' ')),
	            array('HtmlTag', 		array('tag' =&gt; 'p', 'class' =&gt; 'element-group')
			),
        ));

        $this-&gt;addElement('text', 'identity', array(
            'label'      	=&gt; 'Email',
        	'value'			=&gt; '',
            'required'   	=&gt; true,
            'filters'    	=&gt; array('StringTrim', 'StripTags', 'StringToLower'),
        	'validators' 	=&gt; array('EmailAddress'),
        ));

        $this-&gt;addElement('password', 'credential', array(
            'label'      	=&gt; 'Password',
            'required'   	=&gt; true,
        	'filters'    =&gt; array('StringTrim', 'StripTags'),
        	'description'	=&gt; '&lt;a href=\"#\"&gt;Remember password&lt;/a&gt;',
			'decorators' 	=&gt; array(
				array('ViewHelper'),
	            array('Description', 	array('escape' =&gt; false, 'tag' =&gt; 'span', 'class'=&gt;'element-description')),
	            array('Label', 			array('separator'=&gt;' ')),
	            array('Errors'),
				array('HtmlTag', 		array('tag' =&gt; 'p', 'class'=&gt;'element-group'))
			)
        ));

        $this-&gt;addElement('checkbox', 'rememberme', array(
            'label'     =&gt; 'Remember me',
            'value'		=&gt; '1',
        	'checked' 	=&gt; false,
        	'decorators' 	=&gt; array(
				array('ViewHelper'),
	            array('Label', 			array('placement' =&gt; 'APPEND')),
	            array('Errors'),
				array('HtmlTag', 		array('tag' =&gt; 'p', 'class'=&gt;'element-group'))
			)
        ));

        // Add the submit button
       	$this-&gt;addElement('submit', 'submit', array(
            'ignore'   		=&gt; true,
       		'description'	=&gt; '&lt;a href=\"#\"&gt;Cancel&lt;/a&gt;',
       		//set decorator
			'decorators' 	=&gt; array(
				array('ViewHelper'),
				array('Description', 	array('escape' =&gt; false, 'tag' =&gt; 'span', 'class'=&gt;'element-canel-link')),
				array('HtmlTag', 		array('tag' =&gt; 'p', 'class'=&gt;'submit-group'))
			)
        ));

        // And finally add some CSRF protection
        $this-&gt;addElement('hash', 'csrf', array(
        	'ignore' =&gt; true,
       		//set decorator
        	'decorators' =&gt;
			array(
				array('ViewHelper'),
				array('HtmlTag', 		array('tag' =&gt; 'p', 'class'=&gt;'element-group-hidden'))
			)
        ));
    }
}</div>
</pre>
<p>Lo ideal sería crear una clase con <code>Zend_Form_Decorator</code> para que realizará estos cambios automáticamente, pero eso es ya lo dejo para otro post. Así que hasta aquí la primera parte de los <strong>Decorators</strong>, otro día (espero) veremos como tratar otros elementos, los errores, etc&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.backtheweb.com/php/zend-form-decorator-parte-i.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>¡¿Que coño pasa con zend framework!?</title>
		<link>http://www.backtheweb.com/general/%c2%a1%c2%bfque-cono-pasa-con-zend-framework.html</link>
		<comments>http://www.backtheweb.com/general/%c2%a1%c2%bfque-cono-pasa-con-zend-framework.html#comments</comments>
		<pubDate>Tue, 03 Nov 2009 09:16:01 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.backtheweb.com/general/%c2%a1%c2%bfque-cono-pasa-con-zend-framework.html</guid>
		<description><![CDATA[Cada vez que actualizo el maldito Framework he de hacer malavares para poder settear mis aplicaciones&#8230; que si borra una en set_include_path, que si crea un puto plugin para que funcionen los modulos.
Cada vez los errores por pantalla son más extraños&#8230; ¡estoy hasta el moño! ¡Me paso a Symphony!
]]></description>
			<content:encoded><![CDATA[<p>Cada vez que actualizo el maldito Framework he de hacer malavares para poder settear mis aplicaciones&#8230; que si borra una en set_include_path, que si crea un puto plugin para que funcionen los modulos.</p>
<p>Cada vez los errores por pantalla son más extraños&#8230; ¡estoy hasta el moño! ¡Me paso a Symphony!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.backtheweb.com/general/%c2%a1%c2%bfque-cono-pasa-con-zend-framework.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oferta de Trabajo de mquetador en Atrapalo</title>
		<link>http://www.backtheweb.com/empleo/oferta-de-trabajo-de-mquetador-en-atrapalo.html</link>
		<comments>http://www.backtheweb.com/empleo/oferta-de-trabajo-de-mquetador-en-atrapalo.html#comments</comments>
		<pubDate>Mon, 19 Oct 2009 14:16:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[empleo]]></category>

		<guid isPermaLink="false">http://www.backtheweb.com/?p=341</guid>
		<description><![CDATA[
En Atrapalo.com se busca maquetador web. 
Si buscas trabajo y tienes conocimientos en maquetación puede interesarte la oferta (todo es negociable). Puedes ver anuncio en infojobs.
]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.backtheweb.com/wp-content/uploads/2009/07/Logo_Atrapalo_red2.jpg" alt="Atrapalo.com" title="Atrapalo.com" width="150" height="206" class="aligncenter size-full wp-image-193" /></p>
<p>En <a href="http://www.atrapalo.com/" title="Ocio al precio">Atrapalo.com</a> se busca <strong>maquetador web</strong>. </p>
<p>Si buscas trabajo y tienes conocimientos en maquetación puede interesarte la oferta (todo es negociable). Puedes <a href="http://www.infojobs.net/barcelona/maquetador-xhtml-css/of-i222193354218163093057385270613">ver anuncio</a> en infojobs.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.backtheweb.com/empleo/oferta-de-trabajo-de-mquetador-en-atrapalo.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Gracias a todos por vuestros comentarios</title>
		<link>http://www.backtheweb.com/general/gracias-a-todos-por-vuestros-comentarios.html</link>
		<comments>http://www.backtheweb.com/general/gracias-a-todos-por-vuestros-comentarios.html#comments</comments>
		<pubDate>Thu, 01 Oct 2009 22:28:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.backtheweb.com/?p=336</guid>
		<description><![CDATA[No quería irme a dormir sin expresar lo contento que me siento por los comentarios recibidos  últimamente, y en especial el primer comentario que dejó Olagato que me animó a continuar escribiendo sobre Zend.
Me dolió mucho los comentarios y la falta de respeto que mostró &#60;em&#62;Javi Moya&#60;/em&#62; pero vosotros me lo habéis hecho olvidar rápidamente [...]]]></description>
			<content:encoded><![CDATA[<p>No quería irme a dormir sin expresar lo contento que me siento por los comentarios recibidos  últimamente, y en especial el primer comentario que dejó <strong>Olagato</strong> que me animó a continuar escribiendo sobre <strong>Zend</strong>.</p>
<p>Me dolió mucho los comentarios y la falta de respeto que mostró &lt;em&gt;Javi Moya&lt;/em&gt; pero vosotros me lo habéis hecho olvidar rápidamente ¡Gracias!</p>
<p>Como veis es un blog pequeño y personal de pocos posts y muchos de poco interés.</p>
<p>Deciros que no me avergüenzo de decir que ayer cumplí mi récord de visitas 44! Y pese a ser un número ridículo cada vez que la web supera en vistas día tras día o cada vez que alguien deja un post aportando valor y no destruyendo me llena de alegría y no puedo evitar gritar en medio de la oficina &#8220;¡Tengo un nuevo comentario!&#8221; o &#8220;¡He superado mi record de visitas!&#8221;. Porque pese a trabajar (y haber trabajado) en webs con miles (y cuando digo miles son muchos miles) de visitas diarias, mis 44 visitas de mi blog son para mi mis 44 visitas más felices (incluso las de los bots).</p>
<p>Dado que lo que me gusta y parece que os gusta es <strong>Zend</strong> estoy preparando una nueva versión del blog más enfocada a este tema. Tengo dudas de como afrontar el cambio o de lo contrario abrir otro blog a parte, eso sí con <strong>Wordpress</strong> porque lo cierto es que no tengo tiempo para crear un blog con <strong>Zend</strong>.</p>
<p>Bueno, me quedo con ganas de decir y agradecer muchas cosas pero no quiero aburrir a nadie así que he borrado unos cuantos parágrafos. Por lo que me despido hasta un próximo post dando las gracias a:</p>
<p><strong>Olagato</strong>, <strong>Arts</strong>, <strong>Federico</strong>, <strong>Milena</strong>, <strong>Caro</strong>, <strong>Matias</strong> y a <strong>Lisandro</strong> ¡Gracias!</p>
<p>Buenas noches y felices Zend-sueñuos</p>
]]></content:encoded>
			<wfw:commentRss>http://www.backtheweb.com/general/gracias-a-todos-por-vuestros-comentarios.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zend Layout y ActionStacks de Zend Framework</title>
		<link>http://www.backtheweb.com/php/zend-layout-actionstacks-zend-framework.html</link>
		<comments>http://www.backtheweb.com/php/zend-layout-actionstacks-zend-framework.html#comments</comments>
		<pubDate>Tue, 29 Sep 2009 23:16:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.backtheweb.com/?p=325</guid>
		<description><![CDATA[En la documentación deZend Layout no acaba de quedar muy claro como se usa y suele provocar muchas confusiones si solo hacemos una lectura vertical del manual.
Zend Layout es uno de mis objetos preferidos por la versatilidad que ofrece y una vez entiendes el proceso y como combinarlo con el resto del Framework y los [...]]]></description>
			<content:encoded><![CDATA[<p>En la documentación de<strong>Zend Layout</strong> no acaba de quedar muy claro como se usa y suele provocar muchas confusiones si solo hacemos una lectura vertical del manual.</p>
<p><strong>Zend Layout</strong> es uno de mis objetos preferidos por la versatilidad que ofrece y una vez entiendes el proceso y como combinarlo con el resto del Framework y los <em>placeholders</em> obtienes una gestión muy clara de las plantillas.</p>
<p>Vamos a suponer el siguiente <em>layout</em>:</p>
<pre><code>&lt;div&gt;
&lt;?php echo $this-&gt;render('header.phtml') ?&gt;
&lt;h1&gt;&lt;?php echo $this-&gt;placeholder('h1') ?&gt;&lt;/h1&gt;
&lt;?php echo $this-&gt;layout()-&gt;nav ?&gt;
&lt;?php echo $this-&gt;layout()-&gt;content ?&gt;
&lt;/div&gt;</code></pre>
<p><span id="more-325"></span>Cada bloque de código <strong>php</strong> realiza una acción diferente.</p>
<ul>
<li><em>$this-&gt;render(&#8217;header.phtml&#8217;) </em> se encargará de llamar al archivo <em>header.phtml</em> que estará ubicado en el mismo nivel que el <em>layout</em>.</li>
<li><em>$this-&gt;placeholder(&#8217;h1&#8242;) </em> nos devolverá el valor que hallamos definido en la plantilla usando <em>$this-&gt;placeholder(&#8217;h1&#8242;)-&gt;set(&#8217;Mi h1&#8242;); </em></li>
<li><em>$this-&gt;layout()-&gt;nav</em> es un <strong>ActionStack</strong></li>
<li><em>$this-&gt;layout()-&gt;content</em> nos devolverá el contenido de la plantilla</li>
</ul>
<p>Pero ¿Que són los <em>ActionStacks</em>? ¿como se usan los? y ¿Para que sirven? Básicamente lo que logramos con los <em>ActionStacks</em> es renderizar un fragmento de código generado por una acción que no es la misma que estamos ejecutando en el momento de renderizar la página.</p>
<p>Todo será más fácil si usamos el <abbr title="Modelo Vista Controlador">MVC</abbr> o <em>Zend Application</em></p>
<p>Para hacer un <em>ActionStack</em> necesitaremos dos cosas: Un controlador y una llamada a este.</p>
<p>Lo primero será crear un controlador como cualquier otro, por ejemplo: <em>NavegacionController</em> con una acción <em>menuAction</em>. Esta acción renderizará <em>menu.phtml</em> pero le indicaremos en que segmento de la plantilla o layout se deberá renderizarse:</p>
<pre><code>
class NavegacionController extends Zend_Controller_Action{

    public function menuAction(){

    	// renderiza menu.phtml en el segmento nav
    	$this-&gt;_helper-&gt;viewRenderer-&gt;setResponseSegment('nav');
    }
}
</code></pre>
<p>Lo siguiente es hacer la llamada desde la acción principal.</p>
<pre><code>
class IndexController extends Zend_Controller_Action {

	public function indexAction() {

		$this-&gt;_helper-&gt;actionStack ('menu', 'navegacion', 'default');
	}
}
</code></pre>
<p>Es decir, cuando llamemos a <em>IndexAction</em> del <em>IndexController</em> el se encargará de llamar a <em>menuAction</em> del <em>navegaciónController</em> para que renderize <em>scripts/navegacion/menu.phtml</em> en el segmento <em>nav</em> que hemos indicado en el <em>layout</em> con <em>$this-&gt;layout()-&gt;nav</em>.</p>
<p>Entonces vemos que el primer parámetro es la acción, el segundo el controlador y el tercero es opcional y se refiere al módulo que por defecto es <em>default</em>.</p>
<p>Para profundizar más con los <em>layouts</em> estan los <em>Placeholder Helper</em> pero esto se sale ya del tema y lo dejo para otro post.</p>
<p>Espero que os se útil.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.backtheweb.com/php/zend-layout-actionstacks-zend-framework.html/feed</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
		<item>
		<title>Zend Framework no funciona en MAMP PRO</title>
		<link>http://www.backtheweb.com/php/zend-framework-no-funciona-en-mamp-pro.html</link>
		<comments>http://www.backtheweb.com/php/zend-framework-no-funciona-en-mamp-pro.html#comments</comments>
		<pubDate>Thu, 03 Sep 2009 21:39:12 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Zend Framework]]></category>

		<guid isPermaLink="false">http://www.backtheweb.com/?p=317</guid>
		<description><![CDATA[Pues hoy me he de comer las palabras que dije ayer en el post que hablaba de MAMP. Hoy he querido probar MAMP Pro y me ha decepcionado.
A diferencia de la versión lite, con la Pro puedes configurar los virtual hosts sin tocar ningún fichero de conflagración ni el fichero hosts lo cual resulta muy [...]]]></description>
			<content:encoded><![CDATA[<p>Pues hoy me he de comer las palabras que dije ayer en el post que hablaba de <a title="MAMP, Mac Apache MySQL PHP, la mejor alternativa siempre" href="http://www.backtheweb.com/general/mamp-mac-apache-mysql-php-la-mejor-alternativa-siempre.html">MAMP</a>. Hoy he querido probar <strong>MAMP Pro</strong> y me ha decepcionado.</p>
<p>A diferencia de la versión <em>lite</em>, con la <em>Pro </em>puedes configurar los <em>virtual hosts</em> sin tocar ningún fichero de conflagración ni el fichero <em>hosts</em> lo cual resulta muy práctico cuando no te mueves con soltura por la <em>Terminal</em>.</p>
<p>El problema en cuestión ha sido un &#8220;<strong>Fatal error</strong>: <em>Allowed memory size of </em>&#8230;&#8221; al ejecutar una apalicación desarrollada en <strong>Zend Framework</strong>. Por defecto <strong>PHP </strong>establece un máximo memoria de 8 Mb y cambiar este valor es tan fácil como editar el parámetro  <em>memory_limit</em> el <em>php.ini</em>.</p>
<p><span id="more-317"></span></p>
<p>Considero que este tipo de ajustes no se deberían realizar a menos que sean realmente necesarios como cuando trabajas con imágenes pero al ser un desarrollo local tampoco es que me mporte mucho así que he editado el <em>php.ini</em>.</p>
<p>¿Cual ha sido la sorpresa? Por mucho que editará el fichero no se reflejaban los cambios. Consulto la ubicación del <em>php.ini</em> con <em>phpInfo()</em> y veo que el fichero esta ubicado en:</p>
<pre>/Library/Application Support/living-e/MAMP PRO/conf/php.ini</pre>
<p>Ok, soy tonto, estaba tocando el fichero <strong>MAMP</strong> y no de <strong>MAMP Pro</strong> (costumbre de usar la verión <em>lite)</em> así que edito el fichero correcto y reinicio.</p>
<p>¿Otra vez? Nada, no se refleja el cambio  8 por 12 y nada. Sigue en 8Mb. La cosa estaba clara yo editaba el fichero correcto pero al arrancar <strong>MAMP Pro</strong> se sobrescribe los cambios. Por lo tanto el fichero <em>php.ini</em> esta en otro lugar y no podía ser otro que dentro de la misma aplicación.</p>
<p>Entonces es cuando abro el contenido de <strong>MAMP Pro</strong> y encuentro el fichero correcto en:</p>
<pre>/Applications/MAMP PRO 1.72/MAMP PRO.app/Contents/Resources/php5.ini</pre>
<p>Ok, todo listo, reiniciamos el <strong>Apache</strong> y comprobamos que los ajustes sean correctos. Y lo son, pero nada el <strong>Fatal Error </strong>aparece igualmente por lo que acabo subiendo el limite de memoria a 32Mb pero nada.</p>
<p>La conclusión es <strong>Zend Framework</strong> no funciona en <strong>MAMP Pro</strong>. Quizás no he buscado suficientemente bien en <em>Google</em>, pero si empezamos así.. mejor volver a usar <a title="MacPorts" href="http://www.macports.org/">MacPorts</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.backtheweb.com/php/zend-framework-no-funciona-en-mamp-pro.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>YouTube hace pruebas en HTML5</title>
		<link>http://www.backtheweb.com/general/youtube-hace-pruebas-en-html5.html</link>
		<comments>http://www.backtheweb.com/general/youtube-hace-pruebas-en-html5.html#comments</comments>
		<pubDate>Thu, 03 Sep 2009 18:59:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.backtheweb.com/?p=312</guid>
		<description><![CDATA[
El otro día un compañero me enseñaba un link curioso sobre lo que se cuece en la casa de YouTube. Y es que lo están preparando todo para la llegada del HTML5. Si usamos la última versión de Safari o Firefox 3.5 podrás ver como reluce YouTube en HTML5.
Cabe destacar que es solo una maqueta [...]]]></description>
			<content:encoded><![CDATA[<p><img class="thumb left" title="YouTube HTML5" src="http://www.backtheweb.com/wp-content/uploads/2009/09/youtube-html5.png" alt="YouTube HTML5" width="279" height="255" /></p>
<p>El otro día un compañero me enseñaba un link curioso sobre lo que se cuece en la casa de <strong>YouTube</strong>. Y es que lo están preparando todo para la llegada del <strong>HTML5</strong>. Si usamos la última versión de <strong>Safari</strong> o <strong>Firefox 3.5</strong> podrás ver como reluce <a title="Maqueta de Youtube en HTML5 " href="http://www.youtube.com/html5">YouTube en HTML5</a>.</p>
<p>Cabe destacar que es solo una maqueta así que no esperes ver ningún video pero lo curioso es que si no dispones de un navegador que sporte <strong>HTML5</strong> en realidad no se ve nada mal excepto por algunos botones mal ubicados.</p>
<p>Quiero pensar que el soporte que dan lo navegadores a <strong>HTML5</strong> e iniciativas como estas van a impulsar de una vez por todas la web <strong>semántica</strong> y que los millones de usuarios que usan navegadores obsoletos den el salto a la modernidad.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.backtheweb.com/general/youtube-hace-pruebas-en-html5.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
