<?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>Emagister Engineering</title>
	<atom:link href="http://engineering.emagister.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://engineering.emagister.com</link>
	<description>Tecnología al servicio de la Formación</description>
	<lastBuildDate>Mon, 14 May 2012 09:40:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Emagister en la BetaBeers (II)</title>
		<link>http://engineering.emagister.com/2012/05/14/emagister-en-la-betabeers-ii/</link>
		<comments>http://engineering.emagister.com/2012/05/14/emagister-en-la-betabeers-ii/#comments</comments>
		<pubDate>Mon, 14 May 2012 09:40:24 +0000</pubDate>
		<dc:creator>Christian Soronellas</dc:creator>
				<category><![CDATA[Conferencias]]></category>
		<category><![CDATA[betabeers]]></category>
		<category><![CDATA[emagister]]></category>
		<category><![CDATA[emagistertech]]></category>

		<guid isPermaLink="false">http://engineering.emagister.com/?p=822</guid>
		<description><![CDATA[Volvemos a la BetaBeers! Esta semana vuelve la BetaBeers, cómo cada mes. Y en esta sesión volvemos a estar al pie del cañón para presentaros qué hacemos y cómo lo hacemos. En esta ocasión será el riguroso Lluís Barceló (@ebotey) quién entrará en escena para hacer el croquis de Emagister y de @EmagisterTech. Para la ocasión vamos a asistir unos cuantos miembros del equipo y nos hemos hecho unas camisetas, [...]]]></description>
			<content:encoded><![CDATA[<h2>Volvemos a la BetaBeers!</h2>
<p style="text-align:justify;">Esta semana vuelve la <strong><a href="http://dir.betabeers.com/event/betabeers-barcelona-18-mayo-2012-257/" rel="external" target="_blank">BetaBeers</a></strong>, cómo cada mes. Y en esta sesión volvemos a estar al pie del cañón para presentaros qué hacemos y cómo lo hacemos. En esta ocasión será el <em>riguroso</em> <strong>Lluís Barceló</strong> (<a href="http://twitter.com/ebotey" rel="external" target="_blank">@ebotey</a>) quién entrará en escena para hacer el croquis de Emagister y de <strong><a href="http://twitter.com/EmagisterTech" rel="external" target="_blank">@EmagisterTech</a></strong>.</p>
<p style="text-align:justify;">Para la ocasión vamos a asistir unos cuantos miembros del equipo y nos hemos hecho unas camisetas, <strong>las camisetas del #rigor</strong>, para dar apoyo a Lluís. Así que si veis a alguien con una camiseta oscura, por delante el hashtag <em>#rigor</em> y por detrás @EmagisterTech, no tengáis dudas. Somos nosotros.</p>
<p style="text-align:justify;">Sin duda el evento promete, tanto por la charla inicial cómo por la presentación del resto de proyectos, además del nuestro. Así que, desde aquí, os animamos a asistir!</p>
]]></content:encoded>
			<wfw:commentRss>http://engineering.emagister.com/2012/05/14/emagister-en-la-betabeers-ii/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mover procesos en ejecución a background y nohup con Bg y Disown</title>
		<link>http://engineering.emagister.com/2012/05/09/mover-procesos-en-ejecucion-a-background-y-nohup-con-bg-y-disown/</link>
		<comments>http://engineering.emagister.com/2012/05/09/mover-procesos-en-ejecucion-a-background-y-nohup-con-bg-y-disown/#comments</comments>
		<pubDate>Wed, 09 May 2012 18:58:07 +0000</pubDate>
		<dc:creator>Carlos Buenosvinos</dc:creator>
				<category><![CDATA[Sistemas]]></category>
		<category><![CDATA[background]]></category>
		<category><![CDATA[bg]]></category>
		<category><![CDATA[disown]]></category>

		<guid isPermaLink="false">http://engineering.emagister.com/?p=809</guid>
		<description><![CDATA[Problema Estoy ejecutando una migración de svn a git (git svn clone&#8230;) en el que va a ser nuestro nuevo servidor de desarrollo, son las 20:44, me quiero ir a casa, el proceso va por la revisión 15146 y hay un total de 26000, lo que significa que todavía le falta un rato. Como soy un poco agonías, he ejecutado el proceso sin nohup, así que si cierro el terminal, [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Problema</strong></p>
<p>Estoy ejecutando una migración de svn a git (git svn clone&#8230;) en el que va a ser nuestro nuevo servidor de desarrollo, son las 20:44, me quiero ir a casa, el proceso va por la revisión 15146 y hay un total de 26000, lo que significa que todavía le falta un rato. Como soy un poco agonías, he ejecutado el proceso sin nohup, así que si cierro el terminal, la líamos parda&#8230;</p>
<p><strong>Solución</strong><br />
<code><br />
job running...<br />
[ctrl]+z<br />
&gt;$ bg<br />
&gt;$ disown -h<br />
</code></p>
<p>Ale, pa casa!</p>
<p><strong>Referencias</strong></p>
<p><a href="http://web.mit.edu/gnu/doc/html/features_5.html">http://web.mit.edu/gnu/doc/html/features_5.html</a></p>
<p><a href="http://www.quantprinciple.com/invest/index.php/docs/tipsandtricks/unix/jobcontrol/">http://www.quantprinciple.com/invest/index.php/docs/tipsandtricks/unix/jobcontrol/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://engineering.emagister.com/2012/05/09/mover-procesos-en-ejecucion-a-background-y-nohup-con-bg-y-disown/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Se venden y/o regalan servidores!</title>
		<link>http://engineering.emagister.com/2012/04/26/se-venden-yo-regalan-servidores/</link>
		<comments>http://engineering.emagister.com/2012/04/26/se-venden-yo-regalan-servidores/#comments</comments>
		<pubDate>Thu, 26 Apr 2012 16:41:58 +0000</pubDate>
		<dc:creator>Carlos Buenosvinos</dc:creator>
				<category><![CDATA[Anuncios]]></category>

		<guid isPermaLink="false">http://engineering.emagister.com/?p=798</guid>
		<description><![CDATA[Los amigos de sistemas de @EmagisterTech han estado haciendo limpieza de algunas máquinas que teníamos por las oficinas y la verdad es que, aunque no son para ponerlas en producción, sí que os pueden servir para instalar un Git, algún entorno de desarrollo o pruebas, servidores para BBDD, utilizarlos como granjita para memcached o instalar un HAProxy o un Varnish. La idea es que podéis hacernos alguna oferta sobre cualquiera [...]]]></description>
			<content:encoded><![CDATA[<p>Los amigos de sistemas de @EmagisterTech han estado haciendo limpieza de algunas máquinas que teníamos por las oficinas y la verdad es que, aunque no son para ponerlas en producción, sí que os pueden servir para instalar un Git, algún entorno de desarrollo o pruebas, servidores para BBDD, utilizarlos como granjita para memcached o instalar un HAProxy o un Varnish.</p>
<p>La idea es que podéis hacernos alguna oferta sobre cualquiera de las máquinas (depende del componente entre 50€ y 150€). Podemos quedar y bajároslo a Barcelona. Si necesitáseis factura, os podríamos hacer una, aunque habría que sumarle el IVA.</p>
<p>Lo más divertido es que podéis explicarnos vuestro proyecto y prometer añadir unos agradecimientos en vuestra página con un link a nuestro blog. Si lo hacéis, evaluaremos las propuestas más divertidas y os regalarémos el hierro en el que estéis interesado.</p>
<p>Como compréndereis, el hierro no tiene garantía pero funcionan y funcionan bien. Cualquier duda, nos podéis enviar un mail a <strong>php@emagister.com</strong>.</p>
<p>Os paso el listado de hierro:</p>
<table width="620" border="0" cellspacing="0" cellpadding="0">
<colgroup>
<col width="279" />
<col width="81" />
<col span="4" width="65" /> </colgroup>
<tbody>
<tr>
<td width="279" height="14">MODELO</td>
<td width="81">CAPACIDAD</td>
<td width="65">HDS</td>
<td width="65">RAM</td>
<td width="65">CPU</td>
<td width="65">FUENTES</td>
</tr>
<tr>
<td height="14">DL360G5</td>
<td>72G 15K SAS</td>
<td>4</td>
<td>4G</td>
<td>1</td>
<td align="right">2</td>
</tr>
<tr>
<td height="14">DL360G5</td>
<td>72G 15K SAS</td>
<td>4</td>
<td>4G</td>
<td>1</td>
<td align="right">2</td>
</tr>
<tr>
<td height="14">DL360G4</td>
<td>146,8G SCSI</td>
<td>2</td>
<td>8G</td>
<td>2</td>
<td align="right">2</td>
</tr>
<tr>
<td height="14">DL360G4</td>
<td>146,8G SCSI</td>
<td>2</td>
<td>8G</td>
<td>2</td>
<td align="right">2</td>
</tr>
<tr>
<td height="14">DL360G3</td>
<td>36,4G SCSI</td>
<td>2</td>
<td>2G</td>
<td>1</td>
<td align="right">1</td>
</tr>
<tr>
<td height="14">DL360G3</td>
<td>36,4G SCSI</td>
<td>2</td>
<td>1G</td>
<td>1</td>
<td align="right">1</td>
</tr>
<tr>
<td height="14">DL320G3</td>
<td>80G SATA</td>
<td>1</td>
<td>1G</td>
<td>1</td>
<td align="right">1</td>
</tr>
<tr>
<td height="14">DL320G3</td>
<td>80G SATA</td>
<td>1</td>
<td>1G</td>
<td>1</td>
<td>1</td>
</tr>
<tr>
<td height="14">DL360G4</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td>0</td>
<td align="right">0</td>
</tr>
<tr>
<td height="14">DL320G4</td>
<td>80G SATA</td>
<td>1</td>
<td>4G</td>
<td>1</td>
<td align="right">0</td>
</tr>
<tr>
<td height="14">DL320G5</td>
<td>80G SATA</td>
<td>2</td>
<td>1G</td>
<td>1</td>
<td align="right">0</td>
</tr>
<tr>
<td height="14">DL320G3</td>
<td>80G SATA</td>
<td>2</td>
<td>1G</td>
<td>1</td>
<td>1?</td>
</tr>
<tr>
<td height="14">DL320G5</td>
<td>0</td>
<td>0</td>
<td>2G</td>
<td>1</td>
<td>1?</td>
</tr>
<tr>
<td height="14">DL320G3</td>
<td>80G SATA</td>
<td>2</td>
<td>2G</td>
<td>1</td>
<td align="right">1</td>
</tr>
<tr>
<td height="14">DL320G5</td>
<td>80G SATA</td>
<td>2</td>
<td>1G</td>
<td>1</td>
<td align="right">1</td>
</tr>
<tr>
<td height="14">DL360G4</td>
<td>72,8G SCSI</td>
<td>2</td>
<td>2G</td>
<td>2</td>
<td align="right">2</td>
</tr>
<tr>
<td height="14">DL360G4</td>
<td>36,4 SCSI</td>
<td>2</td>
<td>2G</td>
<td>2</td>
<td align="right">2</td>
</tr>
<tr>
<td height="14">CISCO SECURE PIX 525</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="14">CISCO SECURE PIX 525</td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="14">HP STORAGE WORKS MODULAR SMART ARRAY 1000</td>
<td>72,8G SCSI</td>
<td>9</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="14">HP STORAGE WORKS MODULAR SMART ARRAY 1000</td>
<td>146,8G SCSI</td>
<td>5</td>
<td></td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://engineering.emagister.com/2012/04/26/se-venden-yo-regalan-servidores/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Sprint 2012.Q2.S1</title>
		<link>http://engineering.emagister.com/2012/04/20/sprint-2012-q2-s1/</link>
		<comments>http://engineering.emagister.com/2012/04/20/sprint-2012-q2-s1/#comments</comments>
		<pubDate>Fri, 20 Apr 2012 19:29:24 +0000</pubDate>
		<dc:creator>Carlos Buenosvinos</dc:creator>
				<category><![CDATA[Conferencias]]></category>
		<category><![CDATA[Rendimiento]]></category>

		<guid isPermaLink="false">http://engineering.emagister.com/?p=790</guid>
		<description><![CDATA[El sprint 2012.q2.s1 ha sido un buen sprint, la verdad. Así que después de llegar a casa, me gustaría compartir con vosotros algunas reflexiones de lo que hemos hecho y hemos visto durante estas dos semanas. Rendimiento El equipo de sistemas ha estado haciendo pruebas con Apache 64bits viendo mejoras entre el 15% y 30%, hemos implementado la gestión de Etags (304), hemos cambiado los banners de SmartServer en Argentina [...]]]></description>
			<content:encoded><![CDATA[<p>El sprint 2012.q2.s1 ha sido un buen sprint, la verdad. Así que después de llegar a casa, me gustaría compartir con vosotros algunas reflexiones de lo que hemos hecho y hemos visto durante estas dos semanas.</p>
<h2>Rendimiento</h2>
<p>El equipo de sistemas ha estado haciendo pruebas con Apache 64bits viendo mejoras entre el 15% y 30%, hemos implementado la gestión de Etags (304), hemos cambiado los banners de SmartServer en Argentina por los de Google con DFP Small Business (unas mejoras de UX muy notables en términos de deferring y bloqueo), así que en breve subirán al resto de los países, hemos migrado 100% a Libmemcached (binary protocol + igbinary + no blocking + no compression) y el sprint que viene los deamons correrán en modo binario (para evitar la negociación de protocolo) y hemos experimentado con phps como modo de respuesta del Solr.</p>
<h2>Curiosidades</h2>
<p>Debido a un error, una de las máquinas de Italia, tenía 40 megas de memory limit en la configuración de PHP. Lo bueno es que no generaba ningún problema, ¡lo que nos llamó la atención! así que queríamos dedicar unas palabras a todos aquellos que dicen que los framework como Symfony o Zend consumen mucha memoria.</p>
<h2>Charlas</h2>
<p>Ricard, Christian, Lluís y yo estuvimos en la Symfony Barcelona de este mes. <strong>Marcos Quesada</strong> hablaba sobre Caching en Symfony 2, tocando muchos temas como Varnish con ESI, APC, Memcached, CDN, etc. Os recomiendo que miréis la presentación y lástima que no se grabaron los debates posteriores que fueron muy animados (<a href="http://www.symfony-barcelona.es/eventos/show/6">http://www.symfony-barcelona.es/eventos/show/6</a>).</p>
<h2>Formaciones</h2>
<p>Ya sabéis que los viernes hacemos formación, pues durante este sprint hemos conocido <strong>Pimple</strong> (el contenedor de injección de dependencia de Symfony), <strong>Silex</strong> (el microframework de Symfony) y cómo debugar peticiones contra <strong>Solr</strong>. Necesito que me ayudéis a convencer a <strong>Oriol</strong> para que pueda impartir su formación de Pimple y Silex en alguna Symfony Barcelona, es un poco tímido, así que comentar en este post, para que se anime a presentar. Sobre el debugging de peticiones a Solr, <strong>Iker</strong> está a vuestra disposición si necesitáis alguna cosa, simplemente brillante, super práctico y muy útil.</p>
<p>En resumen, un buen sprint. Muy satisfechos y expectantes de ver quién gana la porra del Barça vs. Madrid. Buen fin de semana a todos!</p>
]]></content:encoded>
			<wfw:commentRss>http://engineering.emagister.com/2012/04/20/sprint-2012-q2-s1/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>&#8220;Developer Dice&#8221;: what to do you when you get stuck!</title>
		<link>http://engineering.emagister.com/2012/04/19/developer-dice/</link>
		<comments>http://engineering.emagister.com/2012/04/19/developer-dice/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 09:00:04 +0000</pubDate>
		<dc:creator>Carlos Buenosvinos</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[stuck]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[team]]></category>

		<guid isPermaLink="false">http://engineering.emagister.com/?p=770</guid>
		<description><![CDATA[Yesterday, we received a shipment from Github with stickers, mugs, t-shirts, etc. It&#8217;s always nice to receive some merchandising to wear for our conferences! We are developers, we sometimes get stuck and I love the white boxes that Github uses to pack the mugs. So, I took a pen, wrote some sentences on them and done! What I called the &#8220;Developer Dice&#8221;! Introduction The Developer Dice is thought for throwing [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday, we received a shipment from Github with stickers, mugs, t-shirts, etc. It&#8217;s always nice to receive some merchandising to wear for our conferences! We are developers, we sometimes get stuck and I love the white boxes that Github uses to pack the mugs. So, I took a pen, wrote some sentences on them and done! What I called the &#8220;Developer Dice&#8221;!</p>
<h2>Introduction</h2>
<p><strong>The Developer Dice</strong> is thought for throwing it each time any developer in your team get stuck with a problem. It will show you the path.</p>
<h2>Building it</h2>
<p><strong>1. Get a medium size box</strong><br />
<strong>2. Write on each side the sentences you want</strong></p>
<h2>Suggested sentences</h2>
<p>Feel free to use your own sentences based on what your team needs.</p>
<p><strong>1. Review the specification</strong><br />
When developers don&#8217;t have proper specifications, we complain, when we have them, we don&#8217;t read them. This is the same as reading user manuals, if you have to, you are not a real man. But from time to time, it&#8217;s nice to review the spec, use cases, etc. in order to guarantee that you are not missing anything. One step backwards to see the forest, not the tree.</p>
<p><strong>2. Check with the stakeholder</strong><br />
Maybe you are doing it right and there is something wrong with the user story, product definition, etc. so stand up and visit the stakeholder, phone him, etc. share what it&#8217;s not gearing with him and together you&#8217;ll see the light.</p>
<p><strong>3. Write a UnitTest</strong><br />
If you are developing, you should be writing unit tests. Because TDD forces you to play with coupling/decoupling and SOLID concepts, you can jump to a and come back.</p>
<p><strong>4. Ask for a code review</strong><br />
4 eyes can see more than 2! Invite a mate to check your code and listen his opinion. Open your mind and your ears, any comment is welcome.</p>
<p><strong>5. Document in the Wiki</strong><br />
Saying that a User Story is done, means coded, unit tested and <strong>documented</strong>. So, if you get stuck, create that wiki page to explain the technical approach to your mates or what configurations your feature has and how to use them to have a mental break.</p>
<p><strong>6. Take a break</strong><br />
Of course! From time to time, you need to rest. If you don&#8217;t see the solution, just stand up, walk around, make a cup coffee and then come back. You will see how evertyhing is clearer. But, don&#8217;t roll the dice n times so you get this side, don&#8217;t trick!</p>
<p>If you build your own Developer dice, please send us a picture to php@emagister.com or comment with a link to your picture!</p>
]]></content:encoded>
			<wfw:commentRss>http://engineering.emagister.com/2012/04/19/developer-dice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cómo Xdebug afecta al rendimiento de tu servidor</title>
		<link>http://engineering.emagister.com/2012/03/02/como-xdebug-afecta-al-rendimiento-de-tu-servidor/</link>
		<comments>http://engineering.emagister.com/2012/03/02/como-xdebug-afecta-al-rendimiento-de-tu-servidor/#comments</comments>
		<pubDate>Fri, 02 Mar 2012 09:30:30 +0000</pubDate>
		<dc:creator>Carlos Buenosvinos</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Rendimiento]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[production server]]></category>
		<category><![CDATA[xdebug]]></category>

		<guid isPermaLink="false">http://engineering.emagister.com/?p=744</guid>
		<description><![CDATA[¿Alguna vez os habéis preguntado cómo afecta Xdebug al rendimiento de un servidor o incluso el de vuestra propia máquina? Pues yo sí. Así que os paso un par de capturas de pantalla sacadas sobre un servidor de producción jugando con la configuración. La inspiración de este post viene del link de los recursos que encontraréis más abajo, pero el experimento es propio. Los datos sacados son jugando símplemente con [...]]]></description>
			<content:encoded><![CDATA[<p>¿Alguna vez os habéis preguntado cómo afecta Xdebug al rendimiento de un servidor o incluso el de vuestra propia máquina? Pues yo sí. Así que os paso un par de capturas de pantalla sacadas sobre un servidor de producción jugando con la configuración. La inspiración de este post viene del link de los recursos que encontraréis más abajo, pero el experimento es propio. Los datos sacados son jugando símplemente con activar o desactivar xdebug, no hemos jugado con otros parámetros, así que todas las directivas son las default.</p>
<p><strong>Load average</strong></p>
<p>El load average tiene mucha afectación. ¿Notáis algo a partir del 28 de Febrero? Se puede apreciar mejoras entre el 20% y el 50%.</p>
<p><a href="http://engineering.emagister.com/wp-content/uploads/2012/03/Screen-shot-2012-03-02-at-8.01.55-AM.png"><img class="aligncenter size-full wp-image-745" title="Xdebug performance penalty in production" src="http://engineering.emagister.com/wp-content/uploads/2012/03/Screen-shot-2012-03-02-at-8.01.55-AM.png" alt="" width="684" height="178" /></a></p>
<p><strong>Consumo de memoria</strong></p>
<p>Máximo aplauso para el amigo Derick, no se aprecia nada, no hace falta ni que ponga el gráfico.</p>
<p><strong>Conclusión</strong></p>
<p>1. Revisar vuestra configuración, por si se os ha escapado Xdebug en Producción.</p>
<p>2. Si sólo utilizáis xdebug para pintar de manera bonita los var_dumps, los E_*, etc. revisadlo, vuestra máquina de desarrollo o servidores de integración, staging, etc. podrían estar consumiendo CPU para hacer otras cosas más interesantes.</p>
<p><strong>Recursos Extras</strong></p>
<p><a href="http://web.performancerasta.com/php%E2%80%99s-xdebug-tracing-overhead-in-production/">http://web.performancerasta.com/php%E2%80%99s-xdebug-tracing-overhead-in-production/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://engineering.emagister.com/2012/03/02/como-xdebug-afecta-al-rendimiento-de-tu-servidor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Emagister en la BetaBeers</title>
		<link>http://engineering.emagister.com/2012/03/01/emagister-en-la-betabeers/</link>
		<comments>http://engineering.emagister.com/2012/03/01/emagister-en-la-betabeers/#comments</comments>
		<pubDate>Thu, 01 Mar 2012 11:00:02 +0000</pubDate>
		<dc:creator>Carlos Buenosvinos</dc:creator>
				<category><![CDATA[Conferencias]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[betabeers]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://engineering.emagister.com/?p=738</guid>
		<description><![CDATA[Emagister estuvo presente, tanto en el público como en la palestra, en la betabeers de Febrero. Para aquellos que no conozcan a los amigos de betabeers, os diremos que es una excelente iniciativa de charlas sobre desarrollo web, apps y start-ups que se llevan a cabo mensualmente en Barcelona, Madrid y Valencia, etc. Algunas start-ups muy interesantes compartieron sus modelos de negocio y sus arquitecturas técnicas. A destacar, personalmente, changeyourflight.com. [...]]]></description>
			<content:encoded><![CDATA[<p>Emagister estuvo presente, tanto en el público como en la palestra, en la <a href="http://betabeers.com/">betabeers</a> de Febrero. Para aquellos que no conozcan a los amigos de betabeers, os diremos que es una excelente iniciativa de charlas sobre desarrollo web, apps y start-ups que se llevan a cabo mensualmente en Barcelona, Madrid y Valencia, etc.</p>
<p>Algunas start-ups muy interesantes compartieron sus modelos de negocio y sus arquitecturas técnicas. A destacar, personalmente, <a href="http://www.changeyourflight.com">changeyourflight.com</a>.</p>
<p>Pues bien, tuve el placer de que me invitaran a chalar durante 1 hora sobre Agile y Scrum y el resultado lo tenéis en youtube:<br />
<iframe src="http://www.youtube.com/embed/Ng65pzl3RqM" frameborder="0" width="420" height="315"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://engineering.emagister.com/2012/03/01/emagister-en-la-betabeers/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PHP Interactive shell y PHP como Shell script</title>
		<link>http://engineering.emagister.com/2012/01/04/php-interactive-shell-y-php-como-shell-script/</link>
		<comments>http://engineering.emagister.com/2012/01/04/php-interactive-shell-y-php-como-shell-script/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 10:01:00 +0000</pubDate>
		<dc:creator>Oriol González</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[cli]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://engineering.emagister.com/?p=578</guid>
		<description><![CDATA[Los intérpretes de línea de comando para PHP interactivos no son ninguna novedad, existen muchas opciones desde hace tiempo, pero a partir de la versión de PHP 5.1.0 viene integrado en el SAPI del Intérprete de Comandos (siempre que hayas compilado PHP con la opción &#8211;with-readline), lo cual lo hace muy sencillo de usar. Empecemos por la inicialización: ¿Fácil, no?. Y nada más, ahora toca empezar a escribir algo de [...]]]></description>
			<content:encoded><![CDATA[<p>Los intérpretes de línea de comando para PHP interactivos no son ninguna novedad, existen muchas opciones desde hace tiempo, pero a partir de la versión de PHP 5.1.0 viene integrado en el <acronym title="Server Application Programming Interface">SAPI</acronym> del Intérprete de Comandos (siempre que hayas compilado PHP con la opción <strong>&#8211;with-readline</strong>), lo cual lo hace muy sencillo de usar.</p>
<p>Empecemos por la inicialización:</p>
<pre class="brush: bash; title: ; notranslate">

$ php -a

Interactive shell

php &gt;
</pre>
<p>¿Fácil, no?. Y nada más, ahora toca empezar a escribir algo de código <img src='http://engineering.emagister.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> . Recuerda usar el caracter &#8220;<em>;</em>&#8221; para terminar una instrucción. Para seguir escribiendo dentro de funciones, bucles, etc, puedes usar el salto de línea.</p>
<pre class="brush: bash; title: ; notranslate">

php &gt; echo 'hola emagisteers!';

hola emagisteers!

php &gt; if (true) {

php { echo 'Ejemplo de condición';

php { }

Ejemplo de condición

php &gt;
</pre>
<p>Una ventaja del <em>Interactive Shell</em> es que tiene la función de autocompletar mediante tabulación, y funciona tanto para variables como funciones, clases o constantes.</p>
<p>Mediante las teclas arriba/abajo te puedes mover por el historial de instrucciones ejecutadas.</p>
<p>Las funciones creadas por el usuario no se mantienen entre sesiones, y del mismo modo, si estás haciendo diversas pruebas sobre la misma sesión, puede haber código ejecutado anteriormente que afecte al flujo actual de ejecución (alguna variable o constante inicializada anteriormente que pueda alterar tu valor esperado), así que hay que tenerlo en cuenta para evitar posibles resultados imprevistos.</p>
<p>Para salir de la interfaz, tan sólo hay que ejecutar <em>exit;</em> o bien usar la combinación <em>Ctrl + C</em>.</p>
<p>También puedes usar <em>php -r</em> para lanzar una simple línea de php:</p>
<pre class="brush: bash; title: ; notranslate">

$ php -r 'echo &quot;Hola emagisteers\n&quot;;'

Hola emagisteers
</pre>
<h4>Usos del Interactive Shell</h4>
<p>Aunque a partir de la versión 5.4 se incluya un pequeño <a href="http://www.php.net/manual/en/features.commandline.webserver.php" target="_blank">Servidor Web</a>, vale la pena seguir usando el <em>Interactive Shell</em> en muchos casos.</p>
<ul>
<li><strong>Probar</strong> <strong>código</strong>: Verificar resultados de funciones, operaciones, precedencias de operadores, etc. se hace muy sencillo y rápido. Puedes copiar directamente código del manual de PHP y pegarlo en la consola, ejecutándose sin problema.</li>
<li><strong>Enseñar</strong>, <strong>aprender</strong>: Tanto si estás aprendiendo PHP, como si quieres enseñar su funcionamiento a alguien, el Interactive Shell es muy útil para mostrar ejemplos rápidamente, sin tener que montar un entorno de pruebas. En nuestro equipo fue especialmente útil cuando preparamos la certificación de Zend PHP.</li>
<li><strong>Soporte al desarrollo</strong>: Dispones de tu entorno de desarrollo local, pero tener una consola con la interfaz abierta hace que pruebes mucho más rápido aquellos casos en los que te queda una pequeña duda, sin tener que recargar la página ni introducir pruebas en tu código fuente.</li>
<li><strong>Autocompletar</strong>: La mayoría de IDEs actuales disponen de soporte para la nomenclatura de funciones, pero en ocasiones estos utilizan muchísima memoria y se hacen lentos incluso para operaciones sencillas. En alguna ocasión, cuando más o menos recordáis el nombre pero no con total exactitud os puede ahorrar tiempo.</li>
</ul>
<h4>PHP como Shell Script</h4>
<p>Desde <em>CLI</em> puedes ejecutar scripts escritos en PHP mediante:</p>
<p>$ php my_script.php</p>
<p>De todos modos, podría ser útil en alguna ocasión que el fichero se pudiera interpretar del mismo modo que un <em>Shell Script</em>. Pues bien, esto es posible definiendo en la primera línea de código el interprete de comandos que se va a utilizar:</p>
<pre class="brush: bash; title: ; notranslate">

#!/usr/bin/php

&lt;?php echo &quot;Hola de nuevo!\n&quot;; ?&gt;
</pre>
<p>Así, podremos lanzar el script (recuerda que debes tener permisos de ejecución) de esta forma:</p>
<pre class="brush: bash; title: ; notranslate">

$ ./my_script.php

Hola de nuevo!
</pre>
<h4>Referencias</h4>
<p>PHP Manual</p>
<p><a href="http://php.net/manual/en/features.commandline.interactive.php" target="_blank">http://php.net/manual/en/features.commandline.interactive.php</a></p>
<p>10 Examples To Inspire You To Use PHP Interactive Shell</p>
<p><a href="http://www.techchorus.net/10-examples-inspire-you-use-php-interactive-shell" target="_blank">http://www.techchorus.net/10-examples-inspire-you-use-php-interactive-shell</a></p>
<p>phpsh, una alternativa por facebook con acceso a la documentación:</p>
<p><a href="http://www.phpsh.org/" target="_blank">http://www.phpsh.org/</a></p>
<p>Executing PHP files</p>
<p><a href="http://php.net/manual/en/features.commandline.usage.php" target="_blank">http://php.net/manual/en/features.commandline.usage.php</a></p>
]]></content:encoded>
			<wfw:commentRss>http://engineering.emagister.com/2012/01/04/php-interactive-shell-y-php-como-shell-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>¿Compensa la certificación de Zend PHP 5.3?</title>
		<link>http://engineering.emagister.com/2011/12/27/compensa-la-certificacion-de-zend-php-5-3/</link>
		<comments>http://engineering.emagister.com/2011/12/27/compensa-la-certificacion-de-zend-php-5-3/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 12:34:44 +0000</pubDate>
		<dc:creator>Carlos Buenosvinos</dc:creator>
				<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://engineering.emagister.com/?p=693</guid>
		<description><![CDATA[Hace 6 meses, &#8220;obligamos&#8221; a todos los desarrolladores web de Emagister ser Zend PHP 5.3 Certified antes de final de año. Emagister pagaba los derechos del examen y los desarrolladores se comprometían a estudiar para obtener la certificación (win &#8211; win). Pues bien, tengo que felicitarles, no sólo porque han aprobado todos sino porque me han ayudado a corroborar mi teoría sobre esta certificación que me gustaría compartir con vosotros. [...]]]></description>
			<content:encoded><![CDATA[<p>Hace 6 meses, &#8220;obligamos&#8221; a <strong>todos</strong> los desarrolladores web de Emagister ser <strong>Zend PHP 5.3 Certified</strong> antes de final de año. Emagister pagaba los derechos del examen y los desarrolladores se comprometían a estudiar para obtener la certificación (win &#8211; win). Pues bien, tengo que felicitarles, no sólo porque <strong>han aprobado todos</strong> sino porque me han ayudado a corroborar mi teoría sobre esta certificación que me gustaría compartir con vosotros.</p>
<p>En algunas de mis presentaciones en las que hablo sobre la Certificación Zend PHP, siempre existe alguien del público que hace la misma pregunta, &#8220;¿vale la pena?&#8221;, pero no sólo en presentaciones, también en grupos de LinkedIn o foros, así que imagino que tanto si soys desarrolladores como tech leads puede que os estéis haciendo la misma pregunta&#8230; pues ahí van algunas respuestas.</p>
<p><strong>Q. ¿Compensa?</strong></p>
<p>A. Sí, compensa, pero hay que tener en cuenta algunos matices que explico con las siguientes respuestas.</p>
<p><strong>Q. ¿Me va a ayudar a encontrar trabajo?</strong></p>
<p>A. Para encontrar trabajo no os va a ayudar, ya os lo digo ahora. Tal y como están las cosas (mucha demanda), podréis acceder a cualquier puesto sin necesidad de tener la certificación aunque nunca se sabe si la cosa se pondrá un poco más complicada. Mi sugerencia es que si PHP forma parte de tu cinturón de herramientas y no te va de 195€, no lo dudes! La percepción desde un punto de vista de entrevistador es que estás preocupado por tu desarrollo profesional y ser más competitivo, en mi opinión, muy buenos inputs.</p>
<p><strong>Q. ¿Va a ayudarme a mejorar mis conocimientos?</strong></p>
<p>Sí, definitivamente, incluso el desarrollador más profesional siempre encontrará algo interesante que aprender, os lo garantizo. Pero no sólo aprenderéis más, sino que consolidaréis lo aprendido y profundizaréis más en lo que ya conocéis. Es evidente! si inviertes unas cuantas semanas de tu tiempo a estudiar, repasar y profundizar sobre un tema serás más competitivo, tendrás más visión y serás capaz de aportar más a tu trabajo y tu equipo. En resumen, todos aquellos que todavía no os habéis puesto con los namespaces u otras curiosidades, ya va tocando y es una muy buena excusa.</p>
<p><strong>Q. ¿Qué beneficios extras tengo?</strong></p>
<p>Creo que el más interesante es una licencia de por vida al Zend Studio 9, que en mi opinión, funciona bastante bien. Me parece un argumento de peso.</p>
<p><strong>Q. ¿Vale la pena que pague la certificación a mi equipo?</strong></p>
<p>Totalmente! Hablando con mi equipo después de certificarse la frase más común era &#8220;noto que ahora sé más, conozco PHP mucho mejor&#8221;. Me resulta difícil dar un número, pero estoy seguro que tiene impacto en la generación de bugs, el rendimiento, la arquitectura, etc.</p>
<p><strong>La respuesta final la tenéis vosotros.</strong></p>
<p>Presentaciones sobre certificación Zend PHP:</p>
<p>- <a href="http://www.slideshare.net/carlosbuenosvinos/certificacion-zend-en-vivo-php-barcelona-2008">http://www.slideshare.net/carlosbuenosvinos/certificacion-zend-en-vivo-php-barcelona-2008</a></p>
<p>- <a href="http://www.slideshare.net/carlosbuenosvinos/zend-php-53-demo-certification-test">http://www.slideshare.net/carlosbuenosvinos/zend-php-53-demo-certification-test</a></p>
]]></content:encoded>
			<wfw:commentRss>http://engineering.emagister.com/2011/12/27/compensa-la-certificacion-de-zend-php-5-3/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>La reunión de retrospectiva</title>
		<link>http://engineering.emagister.com/2011/12/12/reunion-retrospectiva/</link>
		<comments>http://engineering.emagister.com/2011/12/12/reunion-retrospectiva/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 09:42:47 +0000</pubDate>
		<dc:creator>Oriol González</dc:creator>
				<category><![CDATA[Scrum]]></category>
		<category><![CDATA[scrum]]></category>

		<guid isPermaLink="false">http://engineering.emagister.com/?p=233</guid>
		<description><![CDATA[La retrospectiva es mi reunión preferida en SCRUM. Es una sesión programada para garantizar la mejora continua de los procesos y desarrollos, para la realización de autocrítica y tratar cualquier punto susceptible de mejora en el transcurso de un Sprint. Además, va alineada con puntos mencionados en el Agile Manifesto, tales como &#8220;responder al cambio frente a seguir un plan&#8221; y &#8220;Personas e interacciones sobre procesos y herramientas&#8221;. En todo [...]]]></description>
			<content:encoded><![CDATA[<p>La retrospectiva es mi reunión preferida en <a href="http://www.scrumalliance.org/pages/what_is_scrum" target="_blank">SCRUM</a>. Es una sesión programada para garantizar la mejora continua de los procesos y desarrollos, para la realización de autocrítica y tratar cualquier punto susceptible de mejora en el transcurso de un <em>Sprint</em>. Además, va alineada con puntos mencionados en el <a href="http://agilemanifesto.org/" target="_blank">Agile Manifesto</a>, tales como &#8220;responder al cambio frente a seguir un plan&#8221; y &#8220;Personas e interacciones sobre procesos y herramientas&#8221;. En todo caso, es una reunión que recomendaría en cualquier equipo de trabajo y de cualquier disciplina independientemente de si aplicáis o no SCRUM.</p>
<p>En los entornos actuales de desarrollo Web, donde el tiempo es un factor clave para no perder la oportunidad de negocio, y el volumen de trabajo es increíblemente grande, muchos equipos que implementan SCRUM suelen adaptarlo en base a sus necesidades, y la reunión de retrospectiva suele caer en el olvido fácilmente. Se recomienda encarecidamente seguir todas y cada una de las reglas de SCRUM para que éste pueda funcionar fluidamente. En este caso, me gustaría remarcar porqué esta reunión debería ser imprescindible en cualquier equipo de trabajo.</p>
<h4>¿Cómo funciona?</h4>
<p>Es común que la reunión de retrospectiva sea la segunda parte de la <a href="http://www.scrumalliance.org/pages/scrum_ceremonies" target="_blank">Sprint Review Meeting</a>, y suele durar un par de horas. En nuestro equipo técnico acostumbramos a reducirla a 1h o 1&#8217;30h en función de la cantidad de puntos tratados.</p>
<p>Se elige una miembro al azar que ejerza el rol de moderador o facilitador de la reunión. El equipo completo se reúne en una sala y cada uno de ellos expone <strong>3 puntos con los que está contento o crea que hayan avanzado durante el Sprint y 3 puntos en los que crea que se deba mejorar</strong>. El facilitador se ayuda de una pizarra y separa en dos columnas (Good <img src='http://engineering.emagister.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  / Bad <img src='http://engineering.emagister.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' />  ) los puntos mencionados, incrementando mediante votos si más de una persona está de acuerdo con un punto. Al finalizar la ronda, tendremos una lista de puntos positivos y negativos ordenada en función de la importancia de cada uno (más votos, más importante).</p>
<p>Esta primera parte suele ir rápido, y es increíblemente enriquecedor ver cómo cada vez más el equipo se va alineando con los problemas que han surgido y el pensamiento de equipo prevalece sobre el pensamiento individual.</p>
<p>El resto de tiempo de la reunión suele ser variable, pero acostumbramos a recoger los puntos a mejorar, discutirlos brevemente e intentar aportar acciones y personas para mitigar dicho punto. Hay que remarcar que es clave que todos <strong>los puntos acaben en acciones y con un responsable</strong>, siendo revisadas en el siguiente <em>Sprint</em>, para que ésta pueda desarrollarse en el <em>Product Backlog</em> y no caiga en el cementerio de &#8220;los problemas que siempre han ido así y no va a cambiar&#8221;.</p>
<h4>¿Cuando realizarla?</h4>
<p>La reunión se realiza en la parte final del <em>Sprint</em>, cuando las tareas han sido entregadas y se ha realizado la demostración de éstas. Es preferible hacerlas a última hora de la tarde, siempre que todo el equipo esté de acuerdo, para que interrumpa lo mínimo la producción y la segunda parte de discusión pueda alargarse tanto como los asistentes prefieran.</p>
<p>En ocasiones, es útil crear retrospectivas para proyectos grandes que no tienen cabida en un sólo <em>Sprint</em>, e invitar a miembros de otros equipos que hayan participado, con el fin de mejorar el flujo de comunicación entre departamentos y entender lo que necesita cada uno de nosotros.</p>
<h4>¿Cómo prepararla como miembro del equipo?</h4>
<p>Es importante que nos <strong>anotemos en nuestra agenda todo aquello que nos ha afectado negativamente o en positivo nuestro desempeño</strong>. ¿El entorno de desarrollo va muy lento?. ¿Algunos miembros del equipo han hecho un sobreesfuerzo excepcional y quieres hacerlo ver? ¿Nos ha fallado la comunicación con otro departamento? Anótalo en el mismo momento, y antes de la reunión revisa que tus puntos son interesantes para la mejora del equipo.</p>
<p>Y no sólo va de exponer tus puntos, sino también de <strong>aportar posibles soluciones</strong>. Piensa en cual es la mejor solución y aporta con tus propuestas.</p>
<h4>¿Qué nos aporta la retrospectiva?</h4>
<p>Realizar reuniones de retrospectiva de forma frecuente tiene muchos beneficios que aporta tanto a la compañía como a las personas:</p>
<ul>
<li>Mejora la <strong>confianza</strong>: El equipo conoce sus puntos fuertes y debilidades, y los miembros comienzan a reconocer sus inquietudes. Empieza a fluir la sensación de que las propuestas son escuchadas.</li>
<li>Mayor <strong>implicación</strong>: Los problemas se abordan de forma directa, y todos son responsables. La compañía ahora conoce las posibles amenazas del equipo y tiene propuestas para mejorar la productividad.</li>
<li>&#8220;<strong>Pulveriza rocas</strong>&#8220;: Hay problemas que se arrastran de forma permanente como si de una roca se tratara. Tratándolo en una retrospectiva con una parte de los votos del equipo hará notar de la importancia de la solución de dicho problema.</li>
<li>Valorar <strong>personas</strong>: En ocasiones, se puede aprovechar para valorar el esfuerzo de algunos miembros o equipos y hacerlo notar al resto del equipo. Las posibles tensiones o problemas personales es mejor tratarlos de forma individual.</li>
<li><strong>Visibilidad</strong> global: Enviad la tabla de <em>Good/Bad/Actions</em> al resto de la compañía o dirección y dad una visibilidad a todos de cómo afrontáis cada tipo de situación.</li>
<li>Objetivo de<strong> mejora de ejecución</strong>: Cabe recordar que el primer objetivo de la reunion es el de mejorar la ejecución de vuestro equipo. Producir más en menor tiempo, ya sea cambiando prioridades, solucionando distintos problemas, motivando al equipo o simplemente asignando responsables.</li>
</ul>
<p>Éstos son algunos puntos en que se muestran resultados beneficiosos de la retrospectiva. Es muy importante recordar la importancia de las acciones y sus responsables, realizar un seguimiento y dar un margen de tiempo adecuado para su realización. Si dichas tareas caen en el olvido, parte del equipo perderá la confianza en la metodología y caerá en la tentación de no hacerla más.</p>
<p>De todos modos, viendo la gran cantidad de mejoras que puede llegar a aportar a tu compañia, ¿no merece la pena darle un voto de confianza? <img src='http://engineering.emagister.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p><strong>Photo source:</strong> Natural-Heart <a href="http://flic.kr/p/anv1y3" target="_blank">http://flic.kr/p/anv1y3</a> (cc)</p>
]]></content:encoded>
			<wfw:commentRss>http://engineering.emagister.com/2011/12/12/reunion-retrospectiva/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

