<?xml version="1.0" encoding="utf-8" ?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns="http://purl.org/rss/1.0/">




    



<channel rdf:about="http://noenieto.com/blog/todos-los-blogs/RSS">
  <title>Tech Blog</title>
  <link>http://noenieto.com</link>

  <description>
    
      A techblog about Plone, Zope, Python, Ubuntu and OpenSource/Free Sfotware
    
  </description>

  

  
            <syn:updatePeriod>daily</syn:updatePeriod>
            <syn:updateFrequency>1</syn:updateFrequency>
            <syn:updateBase>2009-09-12T00:38:54Z</syn:updateBase>
        

  <image rdf:resource="http://noenieto.com/logo.png"/>

  <items>
    <rdf:Seq>
      
        <rdf:li rdf:resource="http://noenieto.com/blog/un-script-de-fabric-para-obtener-una-copia-de-respaldo-de-plone"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/having-two-jquery-versions-in-one-plone"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/notas-de-instalacion-de-plone-en-amazon-dic-2011"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/getting-help-with-performance-problems-with-plone"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/announcing-iservices.rssdocument"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/11-de-diciembre-dia-del-idioma-internacional-esperanto"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/instalando-zencoding-en-emacs"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/fedora-para-programar-apps-en-python"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/goodbye-world"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/scribes-a-beautiful-and-simple-text-editor-written-in-python"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/fedora-1337"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/serving-files-in-a-directory-with-nginx"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/porting-xdv-theme-to-plone.app.theming"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/querida-web-webona-que-escaner-recomiendan-que-sea-compatible-con-gnu-linux"/>
      
      
        <rdf:li rdf:resource="http://noenieto.com/blog/como-instalar-la-hp-laserjet-1020-en-fedora-15"/>
      
    </rdf:Seq>
  </items>

</channel>


  <item rdf:about="http://noenieto.com/blog/un-script-de-fabric-para-obtener-una-copia-de-respaldo-de-plone">
    <title>Un script de fabric para obtener una copia de respaldo de plone</title>
    <link>http://noenieto.com/blog/un-script-de-fabric-para-obtener-una-copia-de-respaldo-de-plone</link>
    <description></description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h2>Intro</h2>
<p>Escribí un script de Fabric para poder automatizar la siguiente tarea:</p>
<ul>
<li>Entrar a un servidor con plone mediante ssh.</li>
<li>Hacer un <i>snapshot</i> del sitio.</li>
<li>Copiar la base de datos (Data.fs) y el directorio blobstorage a un buildout local.</li>
<li>Reemplazar la base de datos del buildout local con la base de datos que se ha descargado.</li>
</ul>
<p>Para hacer todo eso, hice uso de repozo, <a class="external-link" href="http://pypi.python.org/pypi/collective.recipe.backup">collective.recipe.backup</a> y <a class="external-link" href="http://fabfile.org">Fabric</a>.</p>
<h2>Preparación del <i>buildout</i></h2>
<p>Hay que modificar buildout.cfg para instalar las herramientas adecuadas.</p>
<pre>[buildout]<br />parts += <br />    fabric<br />    repozo<br />    backup<br /><br />[fabric]<br />recipe = zc.recipe.egg<br /><br />[repozo]<br />recipe = zc.recipe.egg<br />eggs = ZODB3<br />scripts = repozo<br /><br />[backup]<br />recipe = collective.recipe.backup<br />#Keep the last 4 backups<br />keep = 4<br />#Always make a full backup<br />full = true<br />#Gzipit<br />gzip = true</pre>
<p>No olvidar actualizar buildout.</p>
<h2>Creación del script</h2>
<p>Basta con hacer un script fabfile.py en la raiz del buildout para que el comando <b>bin/fab/</b> lo tome y liste los comandos disponibles. Me guié de la documentación oficial de fabfile.org para hacer mi script. Y sin más preámbulo, aquí esta:</p>
<pre>from os.path import join as joinpath

from fabric.api import run, cd, local, lcd
from fabric.operations import get
from fabric.colors import green

BUILDOUT_DIR = '/directorio/del/buildout/de/plone'

def install_snapshot():
    with cd(BUILDOUT_DIR):
        #Create snapshot on server
        print green('Create snapshot on server')
        run('bin/snapshotbackup')

        #Copy data.fs and related files
        print green('Copy ZODB and related files')
        files = run("ls var/snapshotbackups/ | sort -n | tail -n 3")
        for f in files.split():
            get('var/snapshotbackups/%s'%f, 'var/snapshotbackups')

        #make a tarfile of the blobstorage dirtree, copy it to local and untar it
        print green('Make tarfile of blobstorage and copy it to local buildout')
        with cd('var/blobstoragesnapshots'):
            run('tar -cf blobstorage.0.tar blobstorage.0')
        get('var/blobstoragesnapshots/blobstorage.0.tar',
            'var/blobstoragesnapshots')
        with lcd('var/blobstoragesnapshots'):
            local('tar -xf blobstorage.0.tar')

        #Install new ZODB/Blobstorage snapshot
        print green('Install new ZODB/Blobstorage snapshot')
        local('bin/snapshotrestore')

</pre>
<h2>Ejecutando</h2>
<p>Se ejecuta así:</p>
<pre>bin/fab -u usuario -H servidor.org install_snapshot</pre>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Buildout</dc:subject>
    
    
      <dc:subject>fabric</dc:subject>
    
    
      <dc:subject>Python</dc:subject>
    
    
      <dc:subject>Linux</dc:subject>
    
    
      <dc:subject>Software Libre</dc:subject>
    
    <dc:date>2012-01-12T20:48:57Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/having-two-jquery-versions-in-one-plone">
    <title>Having two jquery versions in one Plone</title>
    <link>http://noenieto.com/blog/having-two-jquery-versions-in-one-plone</link>
    <description>Quick and dirty hack to have the default jquery (1.4) and another updated jquery on the same site.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h2>Intro</h2>
<p>I'm working on a site that uses a lot of galleries made with Jquerytools. Once the galleries grew up, a small bug appared: after the 15th or 16th element, the gallery started to jump. That can be fixed by upgrading to a new version of jquery. Initially, I just dropped the new minified version of jQuery into one of my skin folders on my theme.Solved!</p>
<p>Well, not that easy. One add-on I'm planning to <a class="external-link" href="https://github.com/tzicatl/collective.composition">add</a> to the site started to work funny. With the default jquery from plone it behaves just nice. So, in the meanwhile, to make things work, Plone has to serve jQuery 1.7 for galleries and the plain old jQuery 1.4 for the rest of the site.</p>
<h2>How to do it</h2>
<ul>
<li>Place the minified jQuery 1.7 to some skin folder in your theme. Do not name it jquery.js, otherwise it will override the one that Plone ships out of the box.</li>
<li>Open ZMI and on portal_javascripts add a new entry for the js file. Here is how it looks.
<p><img src="http://noenieto.com/recursos/Seleccin_001.png" alt="js_registry" class="image-inline" title="js_registry" /></p>
<p>The position is important. Place it just before or after jquery.js. Don't leave it on the bottom.</p>
</li>
<li>Next thing is the condition: request/use_new_jquery. This can be acompished in the a view class. For example:
<pre>class CatalogFolderView(grok.View):
    """                                                                                                                      
    Catalog view for books, audios or dvd's                                                                                  
    """
    grok.context(IATUnifiedFolder)
    grok.template('catalog_view')
    grok.name('folder_catalog_view')

    def update(self):
	super(CatalogFolderView, self).update()
	#hack hack to be able to use jquery 1.7 on new                                                                       
        self.request.set('use_new_jquery', True)

</pre>
</li>
<li>Restart plone and reload. Once test are done, you can go to portal_setup un the ZMI and download the portal_js settings.</li>
</ul>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2012-01-07T00:30:34Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/notas-de-instalacion-de-plone-en-amazon-dic-2011">
    <title>Notas de instalación de Plone en Amazon (Dic 2011)</title>
    <link>http://noenieto.com/blog/notas-de-instalacion-de-plone-en-amazon-dic-2011</link>
    <description>Estoy migrando mi sitio web hacia un nuevo servidor en Amazon EC2. Guardo algunas notas para futura referencia.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a href="http://noenieto.com/blog/instalando-plone-en-una-instancia-de-amazon-ec2" class="internal-link">Ver el post anterior</a></p>
<ul>
<li>Me quedan aproximadamente 2 meses de la promoción de Amazon (1 año de servicio gratis de una instancia t1.micro y 10 GB de EBS).</li>
<li>Usé una instancia <b>m1.small</b> para instalar y compilar todo lo necesario. Después se puede achicar a <b>t1.micro</b> para entrar en el <i>montly free tier</i>.</li>
<li>Probé el AMI de Amazon.Todo de maravilla hasta que intenté instalar  nginx (No quiero apache). ¡Para mi sorpresa, solo trae nginx 0.8.6! Si  instalo a mano, no me aprovecho por completo los beneficios de las  actualizaciones mediante yum. Hacer mis propios RPMs es demasiado  complicado para mi aún. A pesar de que en los repositorios de EPEL hay  una versión más actualizada de nginx, por alguna razón se sigue  instalando la anterior. Por estas razones desistí de usar el AMI de  amazon.</li>
<li>Instalé el AMI oficial de Ubuntu 11.04 y trae nginx 1.0.5. (La última versión estable al día de hoy es la 1.0.11.</li>
<li>La instalación de paquetes es la usual para aplicaciones Python.</li>
<ul>
<pre>aptitude update<br />aptitude upgrade<br />aptitude install python-dev build-essential<br />aptitude install libpcre3-dev zlib1g-dev libjpeg62-dev libpng12-dev libncurses5-dev libxslt1-dev mercurial git subversion python-pip libsasl2-dev pkg-config<br />easy_install -U distribute<br />easy_install -U pip<br /></pre>
</ul>
<li>Añadí un deploy key en <a class="external-link" href="https://github.com/tzicatl/noenieto">mi repo de github</a>. y lo cloné.</li>
<li>Y sigue la receta clásica para inicializar un buildout, solo que con algunas modificaciones:</li>
<ul>
<pre>python -S bootstrap.py<br />bin/buildout -c production.cfg<br /></pre>
</ul>
<li>Buildout genera la configuración de nginx para mi sitio (en parts/), solo tengo que hacer una liga simbólica y reiniciar nginx:</li>
</ul>
<ul>
<ul>
<pre>ln -s /apps/noenieto/parts/nginx/nginx.cfg /etc/nginx/sites-available/noenieto.com</pre>
</ul>
<li>Puse mi Data.fs en un EBS fuera del EBS de la instancia. Hay que  conectarlo a la instancia y montarlo. Añadì la siguiente línea al fstab:</li>
<ul>
<pre>/dev/sdp1    /MyPloneData ext3    rw,noatime,auto    0 0</pre>
</ul>
</ul>
<p>Creo que es todo.</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Buildout</dc:subject>
    
    
      <dc:subject>Ubuntu</dc:subject>
    
    
      <dc:subject>Python</dc:subject>
    
    
      <dc:subject>Software Libre</dc:subject>
    
    
      <dc:subject>Amazon</dc:subject>
    
    
      <dc:subject>Nginx</dc:subject>
    
    
      <dc:subject>Programacion</dc:subject>
    
    
      <dc:subject>Linux</dc:subject>
    
    
      <dc:subject>Plone</dc:subject>
    
    <dc:date>2011-12-24T21:55:00Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/getting-help-with-performance-problems-with-plone">
    <title>Getting help with performance problems with Plone</title>
    <link>http://noenieto.com/blog/getting-help-with-performance-problems-with-plone</link>
    <description>I was, again, surprised by the quality of support from the plone users maling list.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h2>Interesting thread topic about performance</h2>
<p>Recently, on the mailing list for plone-users, a question about performance on a plone site turned into a wealth of useful information for everyone out there that wants to tacke similar problems with their sites.</p>
<p>Here is the mailing list thread: <a class="external-link" href="http://plone.293351.n2.nabble.com/Performance-problems-tp7101195p7101195.html">http://plone.293351.n2.nabble.com/Performance-problems-tp7101195p7101195.html</a></p>
<p>It has references to several tools, products and techniques that normally are spreaded through very different places across the interwebs.</p>
<p>And, now that I'm on it, I'm gonna make a my summary of the issue:</p>
<ul>
<li>Performance problems with plone sites are mainly of three types:</li>
<ul>
<li>Memory-bound: Find out where the memory leak is. Plone 3 is specially leaky. There seems to be <a class="external-link" href="http://plone.293351.n2.nabble.com/Severe-memory-leak-in-zope-i18nmessageid-fixed-td4917950.html">a fix for that</a>.</li>
<ul>
<li>For Plone 3, I used to restart plone instances every day to keep memory usage in limits.</li>
<li>If you use plone on a 64 bit machine, your minimum RAM needs will increase (some times they almost doubles).</li>
<li>Upgrade to Plone 4. </li>
</ul>
<li>CPU-Bound. Some view or template is executing some costly operation every time. This is an oportunity to code optimization. If code optimization is not possible, then you can make use of caching tools like plone.memoize, or cache resources with varnish or plone.app.caching or things like that.</li>
<li>IO-bound bottleneck. The most difficult to trace, to my opinion. </li>
<ul>
<li>Do not increase zserver-threads, decrease it.</li>
<li>Add more ZEO clients.</li>
<li>Separate front-end for visitors and backend for editors.</li>
<li>Tuning for ZEO and ZODB will be useful.</li>
<li>Maybe make a separate data.fs for the portal_catalog. I've never had the need to do that. It depends on how many objects in the catalog are there.</li>
<li>Take out heavy stuff out of ZODB (Videos, images files). That's the reason why, on Plone 4, blobstorage is enabled by default. There are other solutions like Products.Reflecto or ore.bigfile.</li>
<li>RelStorage moves the ZODB from the filesystem to a relational database. It is useful for very high volume of writes (AFIK). But be careful, it is not a silver bullet, you have to take care of tunning your relational DB too and it will become another system to mantain and backup.</li>
</ul>
</ul>
</ul>
<h2>Interesting links about the topic</h2>
<p> </p>
<ul>
<li>Tips on <a class="external-link" href="http://plone.org/documentation/kb/tips-on-how-to-make-a-plone-site-faster">how to make a plone site faster</a>.</li>
<li>Removing <a class="external-link" href="http://pypi.python.org/pypi/collective.remove.kss/">KSS</a>.</li>
<li><a class="external-link" href="http://plone.org/products/collective.stats">Low-level statistics for ZODB</a>.</li>
<li><a class="external-link" href="http://scalingplone.pbworks.com/w/page/3770062/Tuning">Elizabeth Leddy's findings on performance</a> (with suggestions of tools)</li>
<li><a class="external-link" href="http://www.youtube.com/watch?v=0v46s5jAM1w">Performance Tunning de Clusters Plone</a> (Portuguese needed, but portuñol can work as well). </li>
<li><a class="external-link" href="http://blip.tv/plone-conference-2010/plone-conference-2010-high-performance-sites-made-easy-matthew-wilkes-jarn-as-germany-4328686">Plone Conference 2010: High performance sites made easy Matthew Wilkes, Jarn AS, Germany</a>.</li>
</ul>
<p> </p>
<p>Please, feel free to point to more information/tools.</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2011-12-17T17:19:30Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/announcing-iservices.rssdocument">
    <title>Announcing iservices.rssdocument</title>
    <link>http://noenieto.com/blog/announcing-iservices.rssdocument</link>
    <description>Note: I no longer work for iServices, but they kindly asked me to release an updated version. They own me a pizza for this.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h2>Rationale</h2>
<p>I wanted to embedd RSS Feeds directly into Plone and Products.Collage, but I wanted not to store the entries in the ZODB. However, I could not find any suitable product for that task. I did not searched very hard anyway. So I ended up cooking 2 products: <b>iservices.rssdocument</b> and <b>collective.collage.rssdocument</b>.</p>
<h2>What does it do?</h2>
<p>First: <b>iservices.rssdocument</b>. It provides a RSSDocument content-type. This RSSDocument needs two things (well, three): A Title, the URL of the RSS from which you want to retrieve data from, and the number of entries to display.</p>
<p>With that data on place, it will use a jQuery plugin from <a class="external-link" href="http://www.zazar.net/developers/jquery/zrssfeed/">http://www.zazar.net/developers/jquery/zrssfeed/ </a>which uses Google's AJAX Feed API to parse the RSS or ATOM and get JSON data of the parsed Feed and finally embedd it into Plone. There is no interaction with the ZODB appart for retrieving the URL, title, description and number of entries to display. So, it's speed and reliability depends upon external factors to plone.</p>
<p>Next: <b>collective.collage.rssdocument</b>. I wanted to use rssdocument into a Collage. So this is an Add-on that allows me to do that. It only provides the "standard" view for the collage. That's just exactly what I needed for my purposes.</p>
<h2>Where do I get it?</h2>
<p>These two products are already available in Pypi:</p>
<ul>
<li><a class="external-link" href="http://pypi.python.org/pypi/iservices.rssdocument/">iservices.rssdocument on Pypi</a></li>
<li><a class="external-link" href="http://plone.org/products/iservices.rssdocument/"><span class="external-link">iservices.rssdocument</span></a> on Plone.org's index.</li>
<li><a class="external-link" href="http://pypi.python.org/pypi/collective.collage.rssdocument/0.1">collective.collage.rssdocument on Pypi</a></li>
</ul>
<p>They are also available on the collective:</p>
<ul>
<li><a class="external-link" href="https://github.com/collective/iservices.rssdocument/"><span class="external-link">iservices.rssdocument on the github Collective</span></a></li>
<li><a class="external-link" href="https://svn.plone.org/svn/collective/Products.Collage/addons/collective.collage.rssdocument/">collective.collage.rssdocument on the SVN Collective</a></li>
</ul>
<p> </p>
<p class="callout"><b>Final note:</b> It just works with latest versions with plone4.</p>
<p> </p>
<p> </p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2011-12-15T20:11:34Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/11-de-diciembre-dia-del-idioma-internacional-esperanto">
    <title>11 de Diciembre: Día del Idioma Internacional Esperanto</title>
    <link>http://noenieto.com/blog/11-de-diciembre-dia-del-idioma-internacional-esperanto</link>
    <description>11 de Diciembre: Día del Idioma Internacional Esperanto
December 11th: Day of the international language Esperanto 
11-an de Decembro: Zamenhof tagon</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h3>Himno, Anthem</h3>
<p> </p>
<p><a href="http://youtu.be/6AMmfZ4PF3U" target="_blank"><span>http://youtu.be/6AMmfZ4PF3U</span></a></p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p> </p>
<p><span class="link-external"><a class="external-link" href="http://www.percepcionunitaria.org/cv_narrado" target="_blank">Traducción</a></span>, <span class="link-external"><a class="external-link" href="http://www.percepcionunitaria.org/en/cv-narrated-resume-rfg" target="_blank">Traslation</a></span>, <span class="link-external"><a class="external-link" href="http://www.percepcionunitaria.org/eo/rub%C3%A9n-feldman-gonz%C3%A1lez" target="_blank">Traduko</a></span>: Rubén Feldman González</p>
<table class="plain">
<tbody>
<tr>
<th>Esperanto (La Espero)<br /></th><th>Español (La Esperanza)</th><th>English (The Hope)</th>
</tr>
<tr>
<td><span style="float: none; ">En la mondon venis nova sento,</span><br /><span style="float: none; ">tra la mondo iras forta voko;</span><br /><span style="float: none; ">per flugiloj de facila vento</span><br /><span style="float: none; ">nun de loko flugu ĝi al loko.</span><br /><br /><span style="float: none; ">Ne al glavo sangon soifanta</span><br /><span style="float: none; ">ĝi la homan tiras familion:</span><br /><span style="float: none; ">al la mond' eterne militanta</span><br /><span style="float: none; ">ĝi promesas sanktan harmonion.</span><br /><br /><span style="float: none; ">Sub la sankta signo de l' espero</span><br /><span style="float: none; ">kolektiĝas pacaj batalantoj,</span><br /><span style="float: none; ">at rapide kreskas la afero</span><br /><span style="float: none; ">per laboro de la esperantoj.</span><br /><br /><span style="float: none; ">Forte staras muroj de miljaroj</span><br /><span style="float: none; ">inter la popoloj dividitaj;</span><br /><span style="float: none; ">sed dissaltos la obstinaj baroj,</span><br /><span style="float: none; ">per la sankta amo disbatitaj.</span><br /><br /><span style="float: none; ">Sur neŭtrala lingva fundamento,</span><br /><span style="float: none; ">komprenante unu la alian,</span><br /><span style="float: none; ">la popoloj faros en konsento</span><br /><span style="float: none; ">unu grandan rondon familian.</span><br /><br /><span style="float: none; ">Nia diligenta kolegaro</span><br /><span style="float: none; ">en laboro paca ne laciĝos,</span><br /><span style="float: none; ">ĝis la bela sonĝo de l' homaro</span><br /><span style="float: none; ">por eterna ben' efektiviĝos.</span></td>
<td>
<p align="center" style="text-align: center; "><span>Al mundo ha llegado un nuevo sentimiento,<br />Recorre el mundo una fuerte llamada;<br />En alas de un viento ligero<br />vuele ahora de un lugar a otro.</span></p>
<p align="center" style="text-align: center; "><span>No a la espada sedienta de sangre<br />Esta llama a la familia humana:<br />Al mundo que eternamente guerrea<br />Le promete una santa armonía.</span></p>
<p align="center" style="text-align: center; "><span>Bajo el sagrado signo de la esperanza<br />Se reúnen los combatientes de la paz<br />Y pronto avanza la obra<br />Por el trabajo de los esperanzados.</span></p>
<p align="center" style="text-align: center; "><span>Fuertes se levantan los muros milenarios<br />Entre los pueblos divididos<br />Pero saltarán en pedazos las obstinadas barreras<br />Que con sagrado amor serán derrumbadas</span></p>
<p align="center" style="text-align: center; "><span>Sobre un fundamento lingüístico neutral<br />Comprendiéndose los unos a los otros<br />Los pueblos harán de común acuerdo<br />Una sola gran familia</span></p>
<p align="center" style="text-align: center; "><span>Nuestros diligentes hermanos unidos<br />En la tarea de la paz no desfallecerán<br />Hasta que el bello sueño de la humanidad<br />Para bendición eterna se realice</span></p>
</td>
<td><span style="float: none; ">Into the world came a new feeling,</span><br /><span style="float: none; ">through the world goes a powerful call;</span><br /><span style="float: none; ">by means of wings of a gentle wind</span><br /><span style="float: none; ">now let it fly from place to place.</span><br /><br /><span style="float: none; ">Not to the sword thirsting for blood</span><br /><span style="float: none; ">does it draw the human family:</span><br /><span style="float: none; ">to the world eternally fighting</span><br /><span style="float: none; ">it promises sacred harmony.</span><br /><br /><span style="float: none; ">Under the sacred sign of the hope</span><br /><span style="float: none; ">the peaceful fighters gather,</span><br /><span style="float: none; ">and this affair quickly grows</span><br /><span style="float: none; ">by the labours of those who hope.</span><br /><br /><span style="float: none; ">The walls of millennia stand firm</span><br /><span style="float: none; ">between the divided peoples;</span><br /><span style="float: none; ">but the stubborn barriers will jump apart,</span><br /><span style="float: none; ">knocked apart by the sacred love.</span><br /><br /><span style="float: none; ">On a neutral language basis,</span><br /><span style="float: none; ">understanding one another,</span><br /><span style="float: none; ">the people will make in agreement</span><br /><span style="float: none; ">one great family circle.</span><br /><br /><span style="float: none; ">Our diligent union of colleagues</span><br /><span style="float: none; ">in peaceful labor will never tire,</span><br /><span style="float: none; ">until the beautiful dream of humanity</span><br /><span style="float: none; ">for eternal blessing is realized.</span></td>
</tr>
</tbody>
</table>
<p><a class="external-link" href="http://www.percepcionunitaria.org/cv_narrado">Traducción</a>, <a class="external-link" href="http://www.percepcionunitaria.org/en/cv-narrated-resume-rfg">Traslation</a>, <a class="external-link" href="http://www.percepcionunitaria.org/eo/rub%C3%A9n-feldman-gonz%C3%A1lez">Traduko</a>: Rubén Feldman González</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2011-12-07T19:50:00Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/instalando-zencoding-en-emacs">
    <title>Instalando ZenCoding en Emacs</title>
    <link>http://noenieto.com/blog/instalando-zencoding-en-emacs</link>
    <description>Screencast que muestra cómo instalar ZenCoding en Emacs. </description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>ZenCoding: <a class="external-link" href="http://code.google.com/p/zen-coding/">http://code.google.com/p/zen-coding/</a></p>
<p>zenCoding-mode: <a class="external-link" href="https://github.com/rooney/zencoding">https://github.com/rooney/zencoding</a></p>
<p> </p>
<p><iframe frameborder="0" height="480" src="http://www.youtube.com/embed/VPt2U46OI_0?hd=1" width="640"></iframe></p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Programacion</dc:subject>
    
    
      <dc:subject>Emacs</dc:subject>
    
    
      <dc:subject>Software Libre</dc:subject>
    
    <dc:date>2011-11-17T02:20:00Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/fedora-para-programar-apps-en-python">
    <title>Mi propia guía de instalación de Fedora 16</title>
    <link>http://noenieto.com/blog/fedora-para-programar-apps-en-python</link>
    <description>Ya salío Fedora 16 (Verne) y es momento de actualizar. Aquí van mis notas acerca de qué instalalar para tener una máquina lista para desarrollar aplicaciones web con Python.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h2>Intro</h2>
<p class="callout"> </p>
<h1>Actualizaciones:</h1>
<p class="callout"><b>13-Nov:</b> <a href="http://noenieto.com/blog/fedora-para-programar-apps-en-python/#pil--python-imaging-library--y-archivos-jpeg" class="anchor-link">Problemas con PIL</a>.</p>
<p class="callout"><b>25-Nov:</b> El paquete de VirtualBox de rpmfusion <a class="external-link" href="https://bugzilla.rpmfusion.org/show_bug.cgi?id=1979">tiene problemas</a>.<br />Es mejor usar el RPM de la web oficial de <a class="external-link" href="https://www.virtualbox.org/wiki/Linux_Downloads">VirtualBox</a>. <a href="http://noenieto.com/blog/fedora-para-programar-apps-en-python/#virtualbox" class="anchor-link">Ver la guia</a> para que la instalacion sea exitosa.</p>
<p>Esta guía es para relatarle a los 2 lectores de éste blog lo que uso para desarrollar aplicaciones web hechas en Python. En caso de que esos 2 lectores se den un paseo por /dev/null entonces lo dejo como una guía base para mi cuando instale "Beefy Miracle" dentro de 1 año.</p>
<h2>Instalar fedora</h2>
<p>Instalar Fedora es muy fàcil. Bájate el ISO desde la web de <a class="external-link" href="http://fedoraproject.org">www.fedoraproject.org</a>, quémalo en disco o en una usb e instala. No olvides respaldar tus datos. Tengo una Dell Latitude D610 con 2.5 GB de RAM. La instalación completa desde una memoria USB tomó alrededor de 20 minutos.</p>
<p class="callout"><b>Nota:</b> Checa <a class="external-link" href="http://www.linuxliveusb.com">LiveUSB Creator</a> para hacer discos de instalación de USB.<br />Nota 2: Lo instalé también en una Toshiba Satélite L645. Tuvimos problemas al particionar el disco duro. ¡Aguas!</p>
<h2>Instalar actualizaciones</h2>
<p>Siempre se necesitan, justo después de instalar.</p>
<pre>yum update -y<br /></pre>
<h2>Instalar librerías de desarrollo</h2>
<p>Se necesitan compiladores y versiones de desarrollo de varias librerías. Y, como ésto será una máquina de desarrollo de aplicaciones y sitios web con python, también se instalan las librerías de desarrollo, <a class="external-link" href="http://pypi.python.org/pypi/virtualenv">virtualenv</a>, <a class="external-link" href="http://www.pip-installer.org/">pip</a> y <a class="external-link" href="http://docutils.sourceforge.net/">docutils</a>.</p>
<pre>yum install -y python-devel python-setuptools python-virtualenv python-pip python-docutils make automake gcc gcc-c++ zlib-devel libxslt-devel openssl-devel ncurses-devel ncurses-devel mysql-devel libpng-devel libjpeg-turbo-devel</pre>
<h1>Herramientas de colaboración (para desarrolladores)</h1>
<p>Ya son imprescindibles. Uso varias de ellas: <a class="external-link" href="http://mercurial.selenic.com/">mercurial</a>, <a class="external-link" href="http://subversion.apache.org/">subversion</a>, <a class="external-link" href="http://git-scm.com/">git</a> y <a class="external-link" href="http://bazaar.canonical.com/en/">bazaar</a>. Tambien uso <a class="external-link" href="http://www.rapidsvn.org/">rapidsvn</a> para ayudarme con algunos comandos de subversion.</p>
<p>Por último, <a class="external-link" href="http://meld.sourceforge.net/">meld</a>, es una excelente herramienta para checar diferencias y hacer mezclas de código. Se integra muy bien con mercurial, subversion y git.</p>
<pre>yum install -y mercurial subversion git bzr rapidsvn meld</pre>
<h2>Bases de datos</h2>
<p>Por el momento sólo uso MySQL. <a class="external-link" href="http://www.mysql.com/products/workbench/">MySQL Workbench</a> es una fabulosa herramienta para administrar la base de datos. Otra opción sería instalar php-myadmin, pero necesitaría instalar todo el stack LAMP, así que mejor nos quedamos con MySQL Workbench.</p>
<p>Además de lo anterior, SQLAlchemy requerirá las librerías de desarrollo de mysql.</p>
<pre>yum install -y mysql-devel mysql-server mysql-workbench</pre>
<h2><a name="virtualbox"></a>VirtualBox</h2>
<p>Uso <a class="external-link" href="https://www.virtualbox.org/">VirtualBox</a> para correr una copia pirata de Windoze XP y finalmente sacar los bugs del infame Internet Explorer. Dentro de windows uso el <a class="external-link" href="http://www.my-debugbar.com/wiki/IETester/HomePage">IETester</a> y me ayuda mucho.</p>
<p class="callout"><b>Nota:</b> los de saucelabs acaban de sacar <a class="external-link" href="http://saucelabs.com/">VisualScout</a>.</p>
<p>Primero, para evitar problemas, es necesario instalar las librerías de desarrollo del Kernel. De lo contrario, el VirtualBox reportará muchos problemas.</p>
<pre>yum install -y dkms kernel-devel kernel-headers</pre>
<p>Después, instala el RPM de VirtualBox desde la web oficial de <a class="external-link" href="https://www.virtualbox.org/wiki/Linux_Downloads">VirtualBox.org</a>.</p>
<p class="callout"><b>Nota:</b> No estamos usando el VirtualBox-OSE que ofrece rpmfusion, por que hasta el dìa de hoy (25-Nov-2011), el rpm está mal formado y no incluye varios archivos importantes, por ende el paquete no sirve para nada. El bug <a class="external-link" href="https://bugzilla.rpmfusion.org/show_bug.cgi?id=1979">ya está reportado</a>.</p>
<h2>Herramientas de consola</h2>
<ul>
<li>Como editor, uso <a class="external-link" href="http://www.gnu.org/s/emacs/">emacs</a> para editar archivos en la terminal.</li>
<li>Para navegar por carpetas, a veces uso el <a class="external-link" href="https://www.midnight-commander.org/">midnight commander</a>.</li>
</ul>
<p> </p>
<ul>
</ul>
<pre>yum install -y mc emacs-nox</pre>
<h2>Editores de texto y WingIDE</h2>
<ul>
<li><a class="external-link" href="http://live.gnome.org/Ghex">ghex</a> como editor de texto hexadecimal.</li>
<li><a href="http://noenieto.com/blog/scribes-a-beautiful-and-simple-text-editor-written-in-python" class="internal-link">Scribes</a> se tiene que instalar aparte desde <a class="external-link" href="http://scribes.sourceforge.net/download.html">http://scribes.sourceforge.net/download.html</a></li>
<li><a class="external-link" href="http://projects.gnome.org/gedit/">gedit</a> ya viene instalado.</li>
<li>emacs ya quedó instalado.</li>
<li>Además de los editores anteriores, uso <a class="external-link" href="http://wingware.com/">WingIDE</a> para mis proyectos en Python. Se instala aparte y, por desgracia, es de paga pero es muy bueno para desarrollar apps en Python.</li>
</ul>
<pre>yum install -y ghex</pre>
<p>Estoy probando <a class="external-link" href="http://www.sublimetext.com/2">Sublime Text 2</a> y funciona muy bien.</p>
<h2>Colaboración oficinesca  y cosas en la nube</h2>
<p>Sólo los voy a listar, por que se instalan desde sitios externos (excepto el xchat y el DèjáDup que ya viene incluido):</p>
<ul>
<li><a class="external-link" href="https://www.dropbox.com/">Dropbox</a> (Aunque Fedora ya trae <a class="external-link" href="http://live.gnome.org/DejaDup/">DéjàDup</a>, que parece que ofrece respaldo en la nube pero con tus propios recursos (por ejemplo, en Amazon S3, en RackSpace o en otra máquina por FTP, SSH, WebDav o carpeta local).</li>
<li><a class="external-link" href="http://www.skype.com/">Skype</a></li>
<li>xchat o xchat-gnome</li>
</ul>
<pre>yum install -y xchat</pre>
<h2>Chuleando el GNOME 3</h2>
<p>El tema Adawita de Gnome 3.2 se ve un poco más pulido. O tal vez es que ya me acostumbrè. Por otra parte, no recuerdo de dónde saqué estos paquetes que estaban instalados en F15, pero los listo por si alguna vez se me antoja chulear el shell.</p>
<ul>
<li>faenza-icon-theme</li>
<li>gnome-shell-extensions</li>
<li>gnome-tweak-tool</li>
</ul>
<h2>Navegadores</h2>
<ul>
<li>Google Chrome o Chromium. No parece que chromium esté disponible por default en los repos de fedora 16. Pero pasearte por la <a class="external-link" href="http://www.google.com.mx/chrome">página oficial</a> y descargarte el RPM.</li>
<li>Midori y/o <a class="external-link" href="http://projects.gnome.org/epiphany/">Epiphany</a>. Por ahí lei que Epiphany te permitiría anclar páginas web como si fueran aplicaciones web con su ventana independiente.</li>
</ul>
<h2>Oficina y gráficos</h2>
<p>De vez en cuando uso <a class="external-link" href="http://www.libreoffice.org/">LibreOffice</a>, <a class="external-link" href="http://www.gimp.org/">Gimp</a>, <a class="external-link" href="http://inkscape.org">Inkscape</a>, <a class="external-link" href="http://shutter-project.org/">Shutter</a>, <a class="external-link" href="http://projecthamster.wordpress.com/">Hamster</a>, <a class="external-link" href="http://recordmydesktop.sourceforge.net/">RecordMyDesktop</a> y <a class="external-link" href="http://gtg.fritalk.com/">Get Things Gnome</a>. A continuaciòn el comando para instalar todo eso.</p>
<pre>yum group install -y "Oficina y Productividad" &amp;&amp; yum install -y gimp gimp-data-extras gimpfx-foundry inkscape shutter hamster-applet gtd gtk-recordmydesktop</pre>
<p class="callout"><b>Nota:</b> A veces uso el Screen Recorder que gnome shell ya trae instalado. Se activa con Ctrl+Alt+Shift+R y se desactiva con la misma combinaciòn de teclas. Pero a veces es muy lento.</p>
<p>EasyLife hace la visa más fácil: <a class="external-link" href="http://easylifeproject.org/">http://easylifeproject.org/</a></p>
<div class="visualClear"></div>
<h2>Soluciones a problemas específicos en Fedora 16</h2>
<p> </p>
<h3><a name="pil--python-imaging-library--y-archivos-jpeg"></a>PIL (Python Imaging Library) y archivos jpeg</h3>
<p>Plone hace uso intensivo de PIL y generalmente instalo PIL 1.6 mediant zc.buildout. Es por eso que es necesario que esten instaladas las librerías de desarrollo que le dan soporte a JPG y PNG. No recuerdo si en Fedora 15 todavía se usaba el paquete <b>libjpeg-dev</b>, pero en Fedora 16 parece que ha desaparecido ese paquete y en su lugar se puede usar <b>libjpeg-turbo-devel</b>.</p>
<h3>Activar RPM Fusion</h3>
<p>Las directivas de Fedora prohiben incluir software que no es completamente libre. Las restricciones se atañen principalmente a las leyes de Copyright de Estados Unidos. Pero hay cierto software que no es Open Source, pero que es útil. RpmFusion ofrece colección de paquetes de software compatibles para F15.</p>
<p>Sigue las instrucciones en <a class="external-link" href="http://rpmfusion.org/Configuration">ésta página</a>. <br /><br /></p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Fedora</dc:subject>
    
    
      <dc:subject>Linux</dc:subject>
    
    <dc:date>2011-11-10T16:30:00Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/goodbye-world">
    <title>Goodbye world</title>
    <link>http://noenieto.com/blog/goodbye-world</link>
    <description>My euolgy to Denis Ritchie</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>In Mexico you have to go to 6 years of elementary school, 3 for secondary and another three of Bachelor/high-school just before you can get to the University.</p>
<p>During my three years of high-school I was taught the C language. The first paragraphs on my text book on C talked about Unix and some of the doings of Kernigham, Ritchie and Thomson in the Bell Labs.</p>
<p>Once in the University, one of the first things that I did was to get a hold of "The C programming language". I don't remember if it was on spanish or english.</p>
<p>Nowadays I work as a Python programmer on Linux systems. And I enjoy it. So thanks Dennis, and farewell.</p>
<pre>#include &lt;stdio.h&gt;<br /><br />int main (int argc, char * argv[]) {<br />    printf ("Goodbye, world.\n");<br /><br />    return 0;<br />}<br /></pre>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Programacion</dc:subject>
    
    
      <dc:subject>Linux</dc:subject>
    
    <dc:date>2011-10-14T02:45:00Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/scribes-a-beautiful-and-simple-text-editor-written-in-python">
    <title>Scribes, a beautiful and simple text editor written in Python</title>
    <link>http://noenieto.com/blog/scribes-a-beautiful-and-simple-text-editor-written-in-python</link>
    <description>I love Scribes, a sleek and simple code editor written in Python. This is a review of the things that make me always come back to it.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p> </p>
<p><a class="external-link" href="http://scribes.sourceforge.net/">Scribes</a> describes itself as a <b>Simple, Slim and Sleek Text Editor for GNOME</b>. And if you love GNOME, You'll love Scribes too.</p>
<p>The mayor feature of scribes is it's lack of screen real-state clutter. That means that it does not have a menu-bar and does not organizes open files in tabs; instead, it relies on the OS's window manager to manage all open windows as well as a list of all opened windows in a Scribes session.</p>
<p><img src="http://noenieto.com/recursos/scribes_001.png/image_preview" alt="Defaul Scribes" class="image-inline captioned" title="Defaul Scribes" /></p>
<p>As stated above, Scribes does have a menu toolbar, but it does have a button toolbar and a status bar. But both of them are hidden by default, and when shown, they will be auto hidden after some seconds. When you need to use the toolbar, Scribes relies on a hot-corner (or trigger area). Pretty neat!</p>
<p><dl style="width:400px;" class="image-inline captioned">
<dt><a rel="lightbox" href="/recursos/scribes_002.png"><img src="http://noenieto.com/recursos/scribes_002.png/image_preview" alt="Toolbars in Scribes appear when you hover the mouse over the Hot corner." title="Scribes' toolbars" height="287" width="400" /></a></dt>
 <dd class="image-caption" style="width:400px;">Toolbars in Scribes appear when you hover the mouse over the Hot corner.</dd>
</dl></p>
<p>Besides a few pop-up windows and the two bars, Scribes does not depend on graphic elements like buttons, sliders, etc. To access to it's full potential you will be using using keyboard shortcuts. Keyboard junkies will be pleased!</p>
<p>The basic editing keyboard shortcuts are the one's that you probably already know if you have ever used windows or linux, like <b>Ctr+C</b> and <b>Ctrl+V</b> for copying and pasting text. And to make things easier, Scribes comes with a handy cheat sheet that pops out when you hit <b>Ctrl-H</b>.</p>
<p><dl style="width:400px;" class="image-inline captioned">
<dt><a rel="lightbox" href="/recursos/scribes_003.png"><img src="http://noenieto.com/recursos/scribes_003.png/image_preview" alt="A handy cheat sheet for Scribes." title="Scribes' cheatsheet" height="269" width="400" /></a></dt>
 <dd class="image-caption" style="width:400px;">A handy cheat sheet for Scribes.</dd>
</dl></p>
<p>Scribes is not awfully configurable (in the sense of vim or emacs). I think that's OK, because you rarely need to go beyond Scribes' default settings other than the text Font, Tab width, text wrap and dictionary autocorrect.</p>
<p>If you need different colors, Scribes has Themes.</p>
<p>If you need code snippets an automatic text replacement, it has a small templating system for code snippets and an Autoreplace editor.</p>
<p><img src="http://noenieto.com/recursos/scribes_004.png/image_preview" alt="Advanced configuration" class="image-inline captioned" title="Advanced configuration" /></p>
<p>Should you need anything else from Scribes, the good news is that it is extensible. It's written in Python, what would you expect?</p>
<p>Actually, almost every major feature of Scribes like templates, custom syntax hightlighting colors, bracket completion, theme selector, is written as an extension.</p>
<p>There are common extensions, which are always available to all kinds of documents, and language extensions, which are only available when editing certain type of documents.</p>
<p>For example, for Python, there's a plugin for navigation trough functions and classes, a plugin for syntax checking (using pylint and pyflakes), and a plugin for smart indentation.</p>
<p><dl style="width:400px;" class="image-inline captioned">
<dt><a rel="lightbox" href="/recursos/scribes_005.png"><img src="http://noenieto.com/recursos/scribes_005.png/image_preview" alt="Scribes with the python symbol browser." title="Scribes and Python" height="273" width="400" /></a></dt>
 <dd class="image-caption" style="width:400px;">Scribes with the python symbol browser.</dd>
</dl></p>
<p>For HTML, and XML (including ZPT!), there's <a class="external-link" href="http://mystilleef.blogspot.com/2010/12/zencoding-and-sparkup-in-scribes.html">Sparkup</a> and <a class="external-link" href="http://mystilleef.blogspot.com/2010/05/zencoding-with-scribes.html">ZenCoding</a>.</p>
<p>Recent versions of scribes comes with a side pane (hit <b>F4</b>) to navigate files. This broadens the options available to navigate trough multiple windows:</p>
<ul>
<li>Focus Previous Windows (Ctrl + PageUp)</li>
</ul>
<ul>
<li>Focus Next window (Ctrl + PageDown)</li>
<li>Document browser (<b>&lt;WindowsKey&gt;</b> (or <b>&lt;super&gt;</b>) + <b>B</b> or <b>F9</b>)</li>
</ul>
<p><img src="http://noenieto.com/recursos/scribes_006.png/image_preview" alt="Document browser and recent files" class="image-inline captioned" title="Document browser and recent files" /></p>
<p>There are a lots of small details (that is, keyboard shortcuts) all over the app. But It would take me very long to explain every feature, and I will probably bore you. So just head over the <a class="external-link" href="http://scribes.sourceforge.net/download.html">Scribes' home page</a>, install it and give it a try.</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Python</dc:subject>
    
    
      <dc:subject>Programacion</dc:subject>
    
    <dc:date>2011-07-30T21:55:00Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/fedora-1337">
    <title>Fedora 1337 :)</title>
    <link>http://noenieto.com/blog/fedora-1337</link>
    <description></description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Click en la imagen para verla a <a href="http://noenieto.com/recursos/copy_of_Pantallazo1.png" class="internal-link">tamaño completo</a>.</p>
<p><img src="http://noenieto.com/recursos/copy_of_Pantallazo1.png/image_preview" alt="Fedora 1337" class="image-inline" title="Fedora 1337" /></p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Fedora</dc:subject>
    
    <dc:date>2011-07-21T18:50:00Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/serving-files-in-a-directory-with-nginx">
    <title>Serving files in a directory with nginx</title>
    <link>http://noenieto.com/blog/serving-files-in-a-directory-with-nginx</link>
    <description>I love nginx's simplicity</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Today I wanted to publish some files in a directory with nginx and I was surprised how easy it was.</p>
<p>All I needed to do was to create a file in <b>/etc/nginx/sites-enabled/newsite</b> and add the following:</p>
<pre>server {
    listen 80;
    server_name newsite.mysite.com;
    location / {
        root /path/to/folder/with/files;
        autoindex on;
    }
}
</pre>
<p>Reload nginx and enjoy.</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Web y Web 2.0</dc:subject>
    
    
      <dc:subject>Diseño web</dc:subject>
    
    
      <dc:subject>Nginx</dc:subject>
    
    <dc:date>2011-07-15T03:50:00Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/porting-xdv-theme-to-plone.app.theming">
    <title>Porting your xdv theme to plone.app.theming</title>
    <link>http://noenieto.com/blog/porting-xdv-theme-to-plone.app.theming</link>
    <description>A list of tasks to remind me what to do when porting a xdv theme to plone.app.theming.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p class="callout">Replace "my.theme" or "my/theme" with your theme namespace.</p>
<h3>Use Plone 4.1</h3>
<p>Migrate site to Plone 4.1 or add proper version dependencies to "extends" sections on buildout.</p>
<h3>Add setuptools dependency on plone.app.theming</h3>
<p>Depend on plone.app.theming on <b>setup.py</b>:</p>
<pre>install_requires=[<br /> 'setuptools',<br /> # -*- Extra requirements: -*-<br />          'plone.app.theming',<br />]</pre>
<h3>Update GS Profile</h3>
<p>If working on a egg, change the profile dependency from <b>collective.xdv</b> to <b>plone.app.theming</b>. On <b>profiles/default/metadata.xml</b> locate the following line:</p>
<pre>&lt;dependency&gt;profile-collective.xdv:default&lt;/dependency&gt;<br /></pre>
<p>And change it to:</p>
<pre>&lt;dependency&gt;profile-plone.app.theming:default&lt;/dependency&gt;</pre>
<p>Also create the file <b>profiles/default/theme.xml</b> with the following contents (This also enables the theme upon installation):</p>
<pre>&lt;theme&gt;<br /> &lt;name&gt;my.theme&lt;/name&gt;<br /> &lt;enabled&gt;true&lt;/enabled&gt;<br />&lt;/theme&gt;</pre>
<h3>On the top level resource directory ...</h3>
<p>Change the <b>rules.xml</b> namespace. Open rules.xml (and other xml files) on you static directory. Change the xml namespace from:</p>
<pre> xmlns="http://namespaces.plone.org/xdv"<br /> xmlns:css="http://namespaces.plone.org/xdv+css"<br /></pre>
<p>To:</p>
<pre> xmlns="http://namespaces.plone.org/diazo"<br /> xmlns:css="http://namespaces.plone.org/diazo/css"</pre>
<h3>ZCML</h3>
<p>Then, on <b>my/theme/configure.zcml</b> locate this line:</p>
<pre>&lt;include package="collective.xdv" /&gt;<br /></pre>
<p>And change it to:</p>
<pre>&lt;include package="plone.app.theming" /&gt;<br /></pre>
<h3>Move theme parameters to manifest.cfg</h3>
<p>New features of plone.app.theming include multiple themes and packaging themes in ZIP files.</p>
<p>Themes on ZIP files and themes developed on the file system can include a manifest.cfg file, with the classic INI file format, that includes the following:</p>
<pre>[theme]<br />title = My Theme<br />description = Description of your theme<br />rules = /++theme++my.theme/directory/rules.xml<br />prefix = /++theme++my.theme/directory</pre>
<p>That file serves as a replacement for some settings that you'd normally insert into plone.app.registry using registry.xml import step.</p>
<p> </p>
<ol> </ol>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    
      <dc:subject>Programacion</dc:subject>
    
    
      <dc:subject>Diseño web</dc:subject>
    
    
      <dc:subject>Plone</dc:subject>
    
    <dc:date>2011-07-13T13:15:00Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/querida-web-webona-que-escaner-recomiendan-que-sea-compatible-con-gnu-linux">
    <title>Querida web webona: ¿Qué escáner recomiendan que sea compatible con GNU/Linux?</title>
    <link>http://noenieto.com/blog/querida-web-webona-que-escaner-recomiendan-que-sea-compatible-con-gnu-linux</link>
    <description></description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Hola,</p>
<p>A los dos que leen este blog, les envío un saludo y me gustaría preguntar: ¿qué escáner recomiendan que sea compatible con GNU/Linux?</p>
<p>Mis restricciones son:</p>
<ol>
<li>Lo voy a usar principalmente para escanear facturas y recibos.</li>
<li>Ya tengo una impresora, así es mejor si el escáner no es una multifuncional.</li>
<li>Vivo en México, y será difícil encontrar un scanner que no se encuentre a la venta en territorio nacional.</li>
<li>La computadora que uso es reciclada y no tiene windows, así que no tengo oportunidad de probar ningún controlador para windoze.</li>
<li>Actualmente uso Fedora 15, pero quiero tener la seguridad de que si me muevo a Ubuntu, Gentoo o cualquier otra distro actualizada, el escáner seguirá funcionando.</li>
<li>De preferencia que no tenga que configurar absolutamente nada.</li>
</ol>
<p> </p>
<p>¿Entonces, algún buen samaritano que me recomiende un buen escáner para GNU/Linux?</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2011-07-12T19:00:00Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>


  <item rdf:about="http://noenieto.com/blog/como-instalar-la-hp-laserjet-1020-en-fedora-15">
    <title>Cómo instalar la HP LaserJet 1020 en Fedora 15</title>
    <link>http://noenieto.com/blog/como-instalar-la-hp-laserjet-1020-en-fedora-15</link>
    <description>Escribo mis notas para la próxima vez que tenga que instalar la impresora. Estas notas las hago para mi. Si no eres Noe y no te funcionan, invitame a comer y te ayudo.</description>
    <content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<h3>Descripción de la HP LaserJet 1020</h3>
<p>Es una impresora que compró mi hermana o mi mamá y que tenía más de 2 años arrumbada.</p>
<h3>Instalar dependencias</h3>
<p>Ejecuta esto en la terminal:</p>
<pre>sudo yum install tix foomatic\*</pre>
<p>¿Y por qué? Pues por que si.</p>
<p>También vas a necesitar otros paquetes como gcc, pero como ya lo tenía instalado y un montonal de paquetes de desarrollo también entonces ya no se qué mas se necesite.</p>
<h3>Instalar foo2zjs</h3>
<p>Esto me lo copie verbatim de la página de <a class="external-link" href="http://foo2zjs.rkkda.com">foo2zjs</a> y le puse de mi propia cosecha. No seas huevón como yo, ahórrate unos 20 minutos de andar buscando en google y lee el <a class="external-link" href="http://foo2zjs.rkkda.com/INSTALL">INSTALL</a>.</p>
<pre>mkdir -p ~/Aplicaciones/DriverHP <br />cd ~/Aplicaciones/DriverHP<br />wget -O foo2zjs.tar.gz http://foo2zjs.rkkda.com/foo2zjs.tar.gz<br />tar zxf foo2zjs.tar.gz<br />cd foo2zjs<br />make<br />./getweb 1020<br />sudo make install<br />rpm -e --nodeps system-config-printer-udev<br />sudo make install-hotplug<br />sudo make install cups<br /></pre>
<p>Cuando termine de ejecutarse todo eso ( y sin errores), desconecta la impresora, apágala y reinicia la máquina.</p>
<p>Después de reiniciar la computadora enciende la impresora y conéctala a la computadora. Abre la herramienta de configuración de impresoras (syste-config-printer) y añade una impresora (Nota: acepta los defaults que te propone el programita y escribe la contraseña mil veces por que te la va a pedir).</p>
<p>Listo.</p>]]></content:encoded>
    <dc:publisher>No publisher</dc:publisher>
    <dc:creator>Noe Misael Nieto Arroyo</dc:creator>
    <dc:rights></dc:rights>
    <dc:date>2011-07-02T20:58:12Z</dc:date>
    <dc:type>Entrada en la bitácora</dc:type>
  </item>





</rdf:RDF>

