<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Code on oscarmlage</title>
    <link>https://oscarmlage.com/tags/code/</link>
    <description>Recent content in Code on oscarmlage</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <managingEditor>info@oscarmlage.com (oscarmlage)</managingEditor>
    <webMaster>info@oscarmlage.com (oscarmlage)</webMaster>
    <lastBuildDate>Thu, 11 Feb 2016 21:05:00 +0000</lastBuildDate>
    <atom:link href="https://oscarmlage.com/tags/code/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Moviendo entornos virtuales virtualenv</title>
      <link>https://oscarmlage.com/posts/moviendo-entornos-virtuales-virtualenv/</link>
      <pubDate>Thu, 11 Feb 2016 21:05:00 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/moviendo-entornos-virtuales-virtualenv/</guid>
      <description>&lt;p&gt;Una de las ventajas de los entornos virtuales es que los podemos recrear en cualquier m&amp;aacute;quina con muy poco coste de tiempo, siempre que tengamos los requisitos m&amp;aacute;s o menos documentados es tan sencillo como lanzar un comando para volver a construirlo &amp;iquest;o no?. La teor&amp;iacute;a es fant&amp;aacute;stica pero en la pr&amp;aacute;ctica siempre surgen - como no - problemas &lt;em&gt;murphianos&lt;/em&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PyConES 2015</title>
      <link>https://oscarmlage.com/posts/pycones-2015/</link>
      <pubDate>Sat, 28 Nov 2015 11:32:51 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/pycones-2015/</guid>
      <description>&lt;p&gt;El pasado fin de semana (20 a 22 noviembre de 2015) se celebr&amp;oacute; en Valencia la &lt;a href=&#34;http://2015.es.pycon.org/es/&#34;&gt;PyConES 2015&lt;/a&gt;, la tercera edici&amp;oacute;n de la conferencia nacional sobre Python m&amp;aacute;s importante de Espa&amp;ntilde;a. As&amp;iacute; que como no pod&amp;iacute;a ser de otra forma, despu&amp;eacute;s de un noviembre at&amp;iacute;pico por un m&amp;aacute;s que intenso e interesante Sprint (materia de otro post), all&amp;aacute; nos fuimos &lt;a href=&#34;http://blog.e-shell.org/&#34;&gt;Borja&lt;/a&gt; y yo a pasar el fin de semana entre amigos a la ciudad del Turia.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Darcs: Fixing a wrong amend</title>
      <link>https://oscarmlage.com/posts/darcs-fixing-a-wrong-amend/</link>
      <pubDate>Fri, 30 Oct 2015 10:58:24 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/darcs-fixing-a-wrong-amend/</guid>
      <description>&lt;p&gt;I must admit I often get confused when recording a new patch based on a previous one. Sometimes I &lt;code&gt;amend&lt;/code&gt; instead of creating a new record, and once it&#39;s done it&#39;s not easy to &lt;em&gt;rollback&lt;/em&gt;. Well, really it is if you have a backup of the original patch. And this is how I treated to handle it...&lt;/p&gt;</description>
    </item>
    <item>
      <title>Using mercurial a la darcs</title>
      <link>https://oscarmlage.com/posts/using-mercurial-la-darcs/</link>
      <pubDate>Thu, 09 Apr 2015 10:54:41 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/using-mercurial-la-darcs/</guid>
      <description>&lt;p&gt;Nowadays using a version control system is as basic as using an editor. I have to admit I&#39;m a mercurial fanboy because it&#39;s clear, simple and written in python.&lt;/p&gt;&#xA;&lt;p&gt;In some other projects we&#39;re using &lt;a href=&#34;http://darcs.net/&#34;&gt;darcs&lt;/a&gt;, similar to &lt;a href=&#34;http://mercurial.selenic.com/&#34;&gt;mercurial&lt;/a&gt; but with a different approach. As we&#39;ve organized the darcs project, we must pull, create a &lt;em&gt;patch&lt;/em&gt; with the new features, and send it to our QA department for review and bug hunting. If there are errors we must fix them and rewrite + resend the patch for a new review. Once the code is ok, the SYS department pushes the patch to &lt;em&gt;staging&lt;/em&gt; (if there are more tests to be done) and finally to &lt;em&gt;production&lt;/em&gt; enviroment.&lt;/p&gt;</description>
    </item>
    <item>
      <title>ZODB, how to properly delete a BLOB file</title>
      <link>https://oscarmlage.com/posts/zodb-how-properly-delete-blob-file/</link>
      <pubDate>Tue, 25 Nov 2014 22:48:23 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/zodb-how-properly-delete-blob-file/</guid>
      <description>&lt;p&gt;Due one of my&amp;nbsp;&lt;a href=&#34;http://www.pylonsproject.org/projects/pyramid/about&#34;&gt;Pyramid&lt;/a&gt;&amp;nbsp;current projects, I was playing a bit with&amp;nbsp;&lt;a href=&#34;http://www.zodb.org/en/latest/&#34;&gt;ZODB&lt;/a&gt;&amp;nbsp;and blob image storing. After reading here and there, I had no idea how to properly delete a filesystem stored image, blob field related. I though best way was to use&amp;nbsp;&lt;a href=&#34;http://nullege.com/codes/search/ZODB.blob.remove_committed&#34;&gt;remove_committed()&lt;/a&gt;&amp;nbsp;&lt;em&gt;ZODB.blob&lt;/em&gt;&amp;nbsp;method with something like:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django deploy: problems with limited hosting</title>
      <link>https://oscarmlage.com/posts/django-deploy-problems-limited-hosting/</link>
      <pubDate>Mon, 21 Jul 2014 21:51:18 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/django-deploy-problems-limited-hosting/</guid>
      <description>&lt;p&gt;Some months ago I had to deal with a&amp;nbsp;&lt;a href=&#34;../../../../blog/symfony2-en-un-hosting-compartido.html&#34;&gt;Symfony2 project in a shared hosting&lt;/a&gt;&amp;nbsp;(Spanish article) and now the big next deal is a similar task with&amp;nbsp;&lt;a href=&#34;https://www.djangoproject.com/&#34;&gt;Django&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;The project is almost done and I have the hosting credentials, once I&#39;m in I noticed that there is no chance to configure anything (Apache, WSGI or whatever) so I was a bit lost. Thanks to my&amp;nbsp;&lt;a href=&#34;http://ailalelo.com/&#34;&gt;Ailalelo&#39;s mates&lt;/a&gt;&amp;nbsp;(they had lot of experience with this kind of situations) I found the proper configuration.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django and memcache: clear cache keys</title>
      <link>https://oscarmlage.com/posts/django-and-memcache-clear-cache-keys/</link>
      <pubDate>Wed, 05 Feb 2014 13:35:54 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/django-and-memcache-clear-cache-keys/</guid>
      <description>&lt;p&gt;Let&#39;s play&amp;nbsp;&lt;a href=&#34;https://www.djangoproject.com/&#34;&gt;Django&lt;/a&gt; with &lt;a href=&#34;http://memcached.org/&#34;&gt;Memcached&lt;/a&gt;. As the great framework Django is, it&#39;s so easy to activate &lt;a href=&#34;https://docs.djangoproject.com/en/dev/topics/cache/&#34;&gt;any kind of cache&lt;/a&gt; in your project. &lt;em&gt;Memcached&lt;/em&gt; is one of the options, but you can also work with &lt;em&gt;DatabaseCache&lt;/em&gt;, &lt;em&gt;FileBasedCache&lt;/em&gt;, &lt;em&gt;LocMemCache&lt;/em&gt;, &lt;em&gt;MemcachedCache,&lt;/em&gt;&amp;nbsp;&lt;em&gt;DummyCache&lt;/em&gt; (a kind of non-cache very useful for devel/test enviroments) or - of course - your own &lt;em&gt;CustomCache&lt;/em&gt; if you want.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pyramid: 6 - Forms (simpleform)</title>
      <link>https://oscarmlage.com/posts/pyramid-6-forms-simpleform/</link>
      <pubDate>Mon, 04 Nov 2013 19:00:00 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/pyramid-6-forms-simpleform/</guid>
      <description>&lt;p&gt;Aunque hasta ahora es cierto que hemos creado un &lt;em&gt;model&lt;/em&gt; (bueno, dos), una &lt;em&gt;view&lt;/em&gt; y una &lt;em&gt;template&lt;/em&gt;, hemos configurado el &lt;em&gt;root context&lt;/em&gt; de la aplicaci&amp;oacute;n y sabemos m&amp;aacute;s o menos c&amp;oacute;mo funciona y c&amp;oacute;mo movernos por ella, de momento no hemos interactuado demasiado con el &lt;strong&gt;ZODB&lt;/strong&gt;, nos falta agregar datos a ese modelo Twitts que creamos en su d&amp;iacute;a y, obviamente, mostrarlos.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pyramid: 5 - Views y Chameleon Templates</title>
      <link>https://oscarmlage.com/posts/pyramid-5-views-y-chameleon-templates/</link>
      <pubDate>Sun, 03 Nov 2013 19:00:00 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/pyramid-5-views-y-chameleon-templates/</guid>
      <description>&lt;p&gt;Siguiendo con esta serie de art&amp;iacute;culos sobre Pyramid y ZODB ya hemos escrito nuestros primeros modelos, as&amp;iacute; que ya podemos interactuar con ellos de alguna forma: a trav&amp;eacute;s de las &lt;strong&gt;views&lt;/strong&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pyramid: 4 - Models</title>
      <link>https://oscarmlage.com/posts/pyramid-4-models/</link>
      <pubDate>Sat, 02 Nov 2013 19:00:00 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/pyramid-4-models/</guid>
      <description>&lt;p&gt;Si hacemos memoria, hasta el momento ya sabemos &lt;a href=&#34;../../../../pyramid-1-montando-entorno-y-proyecto-zodb.html&#34;&gt;montar un proyecto y un entorno&lt;/a&gt; m&amp;iacute;nimo de trabajo, &lt;a href=&#34;../../../../pyramid-2-entendiendo-la-estructura-del-proyecto.html&#34;&gt;entendemos la estructura&lt;/a&gt; del mismo, incluso nos hemos arriesgado a modificarla ligeramente seg&amp;uacute;n nuestras necesidades; y sabemos a pies juntillas c&amp;oacute;mo funciona el &lt;a href=&#34;../../../../pyramid-3-url-dispatching-y-zodb-transversal.html&#34;&gt;despachador de urls&lt;/a&gt; de Traversal contra la ZODB.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pyramid: 3 - URL Dispatching y ZODB Traversal</title>
      <link>https://oscarmlage.com/posts/pyramid-3-url-dispatching-y-zodb-transversal/</link>
      <pubDate>Fri, 01 Nov 2013 19:00:00 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/pyramid-3-url-dispatching-y-zodb-transversal/</guid>
      <description>&lt;p&gt;En cap&amp;iacute;tulos anteriores hemos visto c&amp;oacute;mo &lt;a href=&#34;../../../../pyramid-1-montando-entorno-y-proyecto-zodb.html&#34;&gt;montar el entorno&lt;/a&gt; y c&amp;oacute;mo &lt;a href=&#34;../../../../pyramid-2-entendiendo-la-estructura-del-proyecto.html&#34;&gt;entenderlo y adaptarlo m&amp;iacute;nimamente&lt;/a&gt; a nuestras necesidades organizativas. Hoy trataremos de abordar el tema del despachador de URL&#39;s... &amp;iexcl;qu&amp;eacute; mal suena en castellano!.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pyramid: 2 - Entendiendo la estructura del proyecto</title>
      <link>https://oscarmlage.com/posts/pyramid-2-entendiendo-la-estructura-del-proyecto/</link>
      <pubDate>Thu, 31 Oct 2013 19:00:00 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/pyramid-2-entendiendo-la-estructura-del-proyecto/</guid>
      <description>&lt;p&gt;En la &lt;a href=&#34;../../../../pyramid-1-montando-entorno-y-proyecto-zodb.html&#34;&gt;anterior entrada&lt;/a&gt; hemos visto lo m&amp;aacute;s b&amp;aacute;sico de c&amp;oacute;mo crear un entorno y un proyecto inicial con &lt;strong&gt;Pyramid + ZODB&lt;/strong&gt;, en este post vamos a intentar entender el proyecto y adaptarlo un poco a nuestra forma de trabajar, para ello nada mejor que empezar ech&amp;aacute;ndole un vistazo a lo que &lt;em&gt;pcreate&lt;/em&gt; ha hecho por nosotros:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Pyramid: 1 - Montando entorno y proyecto con ZODB</title>
      <link>https://oscarmlage.com/posts/pyramid-1-montando-entorno-y-proyecto-zodb/</link>
      <pubDate>Wed, 30 Oct 2013 19:00:00 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/pyramid-1-montando-entorno-y-proyecto-zodb/</guid>
      <description>&lt;p&gt;Las series de art&amp;iacute;culos no son lo m&amp;iacute;o, creo que no he llegado a completar las que he empezado, pero hay que intentarlo. Entiendo que con esa premisa ser&amp;aacute;n pocos los arriesgados lectores que lleguen al final, pero es una de las excusas que tengo para ponerme al l&amp;iacute;o con este nuevo reto, as&amp;iacute; que el que avisa...&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django: limpiando usuarios desde shell</title>
      <link>https://oscarmlage.com/posts/django-limpiando-usuarios-desde-shell/</link>
      <pubDate>Thu, 12 Sep 2013 23:03:29 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/django-limpiando-usuarios-desde-shell/</guid>
      <description>&lt;p&gt;Es tal el inter&amp;eacute;s por el &lt;a href=&#34;http://www.vamosavidas.com/foros/&#34;&gt;foro de VamosaVidas&lt;/a&gt; (si, ese que romp&amp;iacute; en su d&amp;iacute;a y &lt;a href=&#34;http://www.vamosavidas.com/los-duendes-del-foro-nos-lo-han-devuelto.html&#34;&gt;he vuelto a arreglar&lt;/a&gt;) que todos los d&amp;iacute;as tenemos cientos de registros. Realmente se trata de robots que se dedican a hacer spam, pero eso es lo de menos :P.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Darcs: otra forma de trabajar</title>
      <link>https://oscarmlage.com/posts/darcs-otra-forma-de-trabajar/</link>
      <pubDate>Fri, 11 Jan 2013 17:18:13 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/darcs-otra-forma-de-trabajar/</guid>
      <description>&lt;p&gt;Si tengo que ser sincero, desde un principio he sido bastante reacio a la moda esta de los sistemas de control de versiones. Estaba tan agusto y acomodado con mis copias de seguridad y mis carpetas &lt;em&gt;fechadas&lt;/em&gt; que me daba una pereza enorme ponerme a aprender un nuevo sistema que, sin duda, me obligar&amp;iacute;a a cambiar la forma de trabajar.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django: Cambiando de DB Engine</title>
      <link>https://oscarmlage.com/posts/django-cambiando-de-db-engine/</link>
      <pubDate>Sat, 28 Apr 2012 18:42:31 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/django-cambiando-de-db-engine/</guid>
      <description>&lt;p&gt;&#xA;&#x9;Normalmente las especificaciones de un entorno de desarrollo y las de un entorno en producci&amp;oacute;n suelen ser bastante diferentes. Quiz&amp;aacute;s en el primero buscas la comodidad mientras que cuando se hace el &lt;em&gt;deploy&lt;/em&gt; a producci&amp;oacute;n priman otras cosas. Este suele ser el caso del motor de base de datos cuando trabajas con &lt;a href=&#34;http://djangoproject.org&#34;&gt;Django&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Django &#43; virtualenv &#43; pip</title>
      <link>https://oscarmlage.com/posts/django-virtualenv-pip/</link>
      <pubDate>Wed, 23 Feb 2011 21:37:56 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/django-virtualenv-pip/</guid>
      <description>&lt;p&gt;No lo ten&amp;iacute;a claro, pero cuando entend&amp;iacute; lo que supon&amp;iacute;a y c&amp;oacute;mo se trabajaba con &lt;em&gt;virtualenv&lt;/em&gt; + &lt;em&gt;pip&lt;/em&gt; me decid&amp;iacute; a probarlo. Voy a &lt;em&gt;intentar&lt;/em&gt; explicar como se utilizan estas herramientas de una forma gen&amp;eacute;rica, para hacernos una idea de lo que significa y los casos en los que se pueden aplicar. A grandes rasgos:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li class=&#34;level1&#34;&gt;&#xA;&lt;div class=&#34;li&#34;&gt;&lt;a href=&#34;http://djangoproject.org&#34;&gt;Django&lt;/a&gt;: Framework en &lt;em&gt;python&lt;/em&gt;, creo que no necesita mucha m&amp;aacute;s explicaci&amp;oacute;n.&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li class=&#34;level1&#34;&gt;&#xA;&lt;div class=&#34;li&#34;&gt;&lt;a href=&#34;http://pypi.python.org/pypi/virtualenv&#34;&gt;Virtualenv&lt;/a&gt;: Herramienta necesaria para crear un entorno virtual de &lt;em&gt;python&lt;/em&gt;, con las versiones espec&amp;iacute;ficas de los paquetes y/o dependencias que hagan falta para el proyecto.&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;li class=&#34;level1&#34;&gt;&#xA;&lt;div class=&#34;li&#34;&gt;&lt;a href=&#34;http://pypi.python.org/pypi/pip&#34;&gt;Pip&lt;/a&gt;: Gestor/Instalador de esos paquetes (similar a &lt;em&gt;easy_install&lt;/em&gt;).&lt;/div&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Con estas herramientas intentaremos instalar un entorno virtual independiente para gestionar todas las dependencias de nuestro proyecto.</description>
    </item>
    <item>
      <title>¿Codeigniter-Reactor &#43; esteroides?</title>
      <link>https://oscarmlage.com/posts/codeigniter-reactor-esteroides/</link>
      <pubDate>Fri, 04 Feb 2011 20:09:38 +0000</pubDate><author>info@oscarmlage.com (oscarmlage)</author>
      <guid>https://oscarmlage.com/posts/codeigniter-reactor-esteroides/</guid>
      <description>&lt;p&gt;&#xA;&#x9;Es algo que todav&amp;iacute;a no llego a entender ni asimilar. He pasado la mayor parte de la tarde para configurar la nueva versi&amp;oacute;n 2.0 de &lt;a href=&#34;https://github.com/philsturgeon/codeigniter-reactor/&#34;&gt;CodeIgniter-Reactor&lt;/a&gt; con varias librer&amp;iacute;as que, para mi forma de desarrollar, son indispensables en cualquier framework de programaci&amp;oacute;n orientado a web:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&#x9;&lt;li&gt;&#xA;&#x9;&#x9;&lt;a href=&#34;https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc&#34;&gt;HMVC&lt;/a&gt;: Gracias a la librer&amp;iacute;a de &lt;em&gt;Wiredesignz&lt;/em&gt; podemos ordenar nuestro c&amp;oacute;digo en m&amp;oacute;dulos y simplificar la l&amp;oacute;gica de la aplicaci&amp;oacute;n.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;&#xA;&#x9;&#x9;&lt;a href=&#34;https://github.com/pyrocms/pyrocms/tree/master/system/pyrocms/modules/modules&#34;&gt;ModulesModule&lt;/a&gt;: Ahora que todo ser&amp;aacute; un m&amp;oacute;dulo, no vendr&amp;iacute;a mal un m&amp;oacute;dulo encargado de ejecutar las tareas m&amp;aacute;s comunes de los m&amp;oacute;dulos (instalar, desinstalar, actualizar...). Un m&amp;oacute;dulo de m&amp;oacute;dulos.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;&#xA;&#x9;&#x9;&lt;a href=&#34;https://github.com/pyrocms/pyrocms/tree/master/system/pyrocms/modules/settings&#34;&gt;SettingsModule&lt;/a&gt;: No me gusta cargar la configuraci&amp;oacute;n desde ficheros &lt;em&gt;config/*&lt;/em&gt;, por comodidad y para que el usuario pueda cambiar cualquier par&amp;aacute;metro ajustable de una aplicaci&amp;oacute;n, prefiero hacerlo en base de datos y cachearlo a disco si es necesario. Me quedo con la librer&amp;iacute;a de &lt;a href=&#34;http://pyrocms.com&#34;&gt;PyroCMS&lt;/a&gt;.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;&#xA;&#x9;&#x9;&lt;a href=&#34;https://github.com/pyrocms/pyrocms/tree/master/system/pyrocms/modules/themes&#34;&gt;ThemesModule&lt;/a&gt;: Otra caracter&amp;iacute;stica imprescindible ser&amp;iacute;a tener una aplicaci&amp;oacute;n &lt;em&gt;themeable&lt;/em&gt; y que desde un interfaz de administraci&amp;oacute;n se pueda cambiar tranquilamente el aspecto de la misma. Para ello podemos hacer uso de este m&amp;oacute;dulo capaz de instalar y desinstalar themes.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;&#xA;&#x9;&#x9;&lt;a href=&#34;https://github.com/pyrocms/pyrocms/blob/master/system/pyrocms/libraries/Template.php&#34;&gt;TemplateLibrary&lt;/a&gt; y &lt;a href=&#34;https://github.com/pyrocms/pyrocms/blob/master/system/pyrocms/libraries/Tags.php&#34;&gt;TagsLibrary&lt;/a&gt;: Una vez hemos decidido hacer la aplicaci&amp;oacute;n &lt;em&gt;modular&lt;/em&gt; y &lt;em&gt;themeable&lt;/em&gt; siguiendo el patr&amp;oacute;n &lt;em&gt;MVC&lt;/em&gt;, un buen lenguaje de &lt;em&gt;template&lt;/em&gt; para que los dise&amp;ntilde;adores no se vuelvan locos con el lenguaje din&amp;aacute;mico ser&amp;iacute;a un punto m&amp;aacute;s.&lt;/li&gt;&#xA;&#x9;&lt;li&gt;&#xA;&#x9;&#x9;&lt;a href=&#34;https://github.com/philsturgeon/codeigniter-migrations/&#34;&gt;MigrationsLibrary&lt;/a&gt;: Una vez lo pruebas se convierte en &lt;em&gt;musthave&lt;/em&gt;. Se trata de una librer&amp;iacute;a para hacer migraciones de versiones en base de datos. Gestiona los cambios entre versiones de forma sencilla.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;</description>
    </item>
  </channel>
</rss>
