<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<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/"
	>

<channel>
	<title>zope &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/zope/</link>
	<description>Feed of posts on WordPress.com tagged "zope"</description>
	<pubDate>Sat, 28 Nov 2009 04:32:31 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Using z3c.traverser]]></title>
<link>http://romanofskiat.wordpress.com/2009/11/21/using-z3c-traverser/</link>
<pubDate>Sat, 21 Nov 2009 06:16:32 +0000</pubDate>
<dc:creator>romanofski</dc:creator>
<guid>http://romanofskiat.wordpress.com/2009/11/21/using-z3c-traverser/</guid>
<description><![CDATA[One of the things which looked so hard, but reveiled using so easy was z3c.traverser. I&#8217;m some]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>One of the things which looked so hard, but reveiled using so easy was <a href="http://pypi.python.org/pypi/z3c.traverser/0.2.5" target="_self">z3c.traverser</a>. I&#8217;m sometimes a bit retarded reading doctests and applying them to my needs. For those who have the same problem, here a small example on how to use the traverser.</p>
<h2>The Muffin Traverser</h2>
<h4>Motivation</h4>
<p>Our web application catalogues muffin recipes. Every bloody muffin shop in town has a login to our muffin-application and publishes recipes. To view such a recipe the URLs look like this:</p>
<pre>http://muffinsinthehouse.com/shop/recipes/bluemuffin</pre>
<p>Now, the customer who operates the site comes to us with a wish: please make the URLs shorter. Each recipe is created with a unique ID and I like to use this id to look up recipes like this:</p>
<pre>http://muffinsinthehouse.com/bluemuffin</pre>
<h4>Implementation</h4>
<p>&#8220;No worries mate&#8221;, you say and use z3c.traverser and implement a custom traverser. The code below shows your custom traverser plugin:</p>
<pre>import z3c.traverser.interfaces
import zope.interface
import zope.component
import zope.publisher.interfaces
import zope.app.catalog.interfaces

class MuffinTraverserPlugin(object):
    """Traverser which tries to lookup muffins in the database."""

    zope.interface.implements(
        z3c.traverser.interfaces.ITraverserPlugin)

    def __init__(self, context, request):
        self.context = context
        self.request = request

    def publishTraverse(self, request, name):
        catalog = zope.component.getUtility(
            zope.app.catalog.interfaces.ICatalog)
        result = catalog.searchResults(objectname=name, metatype='Recipe')
        if not result:
            raise zope.publisher.interfaces.NotFound(
                self.context, name, request)
        return result[-1].getObject()</pre>
<p>There is nothing really special here, if you know how traversal works in Zope. The plugin is a Multiadapter (a view), which implements z3c.traverser.interfaces.ITraverserPlugin. The object lookup for your muffins is happening in the publishTraverse method. This method either returns the object or raises a NotFound exception if it couldn&#8217;t lookup the object. Easy as pie. The catalog is utilised to lookup the object and if its not found a NotFound error is raised.</p>
<p>You register the plug-in with the following ZCML directive:</p>
<pre>&#60;adapter
 factory="z3c.traverser.traverser.PluggableTraverser"
 for="zope.traversing.interfaces.IContainmentRoot
 zope.publisher.interfaces.IPublisherRequest"
 /&#62;

 &#60;subscriber
 factory=".traversing.MuffinTraverserPlugin"
 for="zope.traversing.interfaces.IContainmentRoot
 zope.publisher.interfaces.IPublisherRequest"
 provides="z3c.traverser.interfaces.ITraverserPlugin"
 /&#62;
</pre>
<p>The first directive &#8220;enables&#8221; z3c.traverser, the second registers your plugin. After that, try out the custom URL which should work. <strong>But wait</strong>, if you try to<strong> look up other objects in the database, you&#8217;ll notice that your traverser deals with them too</strong>. That was not the plan, was it?</p>
<p>z3c.traverser provides other plug-ins to deal with folders attributes etc. <strong>Don&#8217;t lump all those object look-ups into your plug-in!</strong> You need to <strong>register them additionally</strong>:</p>
<pre>&#60;subscriber
 factory="z3c.traverser.traverser.ContainerTraverserPlugin"
 for="zope.traversing.interfaces.IContainmentRoot
 zope.publisher.interfaces.IPublisherRequest"
 provides="z3c.traverser.interfaces.ITraverserPlugin"
 /&#62;</pre>
<p>Try again. This should satisfy the customer.</p>
<p>Comments welcome <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Usare le viste standard di Plone ed evitare di pagare il dazio]]></title>
<link>http://miziodel.wordpress.com/2009/11/18/usare-le-viste-standard-di-plone-ed-evitare-di-pagare-il-dazio/</link>
<pubDate>Wed, 18 Nov 2009 15:57:48 +0000</pubDate>
<dc:creator>miziodel</dc:creator>
<guid>http://miziodel.wordpress.com/2009/11/18/usare-le-viste-standard-di-plone-ed-evitare-di-pagare-il-dazio/</guid>
<description><![CDATA[Spesso nel costruire le nostre viste (template ZPT puri vecchia maniera, o browser view in stile Zop]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Spesso nel costruire le nostre viste (template ZPT puri <em>vecchia maniera</em>, o browser view in stile <em>Zope 3</em>) abbiamo bisogno di richiamare informazioni dal contesto, o servizi di Plone come il <em>portal_catalog</em> o il <em>portal_membership</em>.</p>
<p>Un modo di farlo è quello &#8220;spontaneo&#8221; di richiamarli esattamente dove ci servono usando i meccanismi di base, tipicamente l&#8217;<em>acquisizione</em> di Zope 2. Efficace, ma piuttosto <strong>inefficiente</strong>! Anche perchè frequentemente coincide con il dover usare <em>espressioni python</em> nel template.<br />
Le seguenti sono scorciatoie funzionanti, ma piuttosto <strong>da evitare</strong>:<br />
<code><br />
&#60;div tal:define="catalog here/portal_catalog"&#62;...&#60;/div&#62;<br />
&#60;div tal:define="parent_title python:here.aq_inner.aq_parent.Title()&#62;titolo&#60;/div&#62;<br />
</code></p>
<p><!--more--></p>
<h2>Un paio di considerazioni</h2>
<p>Plone costruisce la sua interfaccia utente in modo &#8220;<em>efficiente</em>&#8220;: andando a vedere come fa scopriamo che esistono alcune viste di base, calcolate una tantum e debitamente mantenute in cache, che sarebbe molto consigliabile usare anche per le nostre esigenze.</p>
<p>Quando costruiamo le nostre browser view, spesso richiamiamo altre browser view, e questo può essere fatto senza scomodare l&#8217;<em>acquisizione</em> e tutti i calcoli che comporta (<em>traversing</em>, <em>sicurezza</em>, etc.).</p>
<h2>Le viste di base di Plone</h2>
<blockquote><p>La prima vista utile si chiama proprio &#8220;<strong>@@plone</strong>&#8220;.</p></blockquote>
<p>Richiamarla in un template è molto semplice:</p>
<p><code> &#60;div tal:define="vista context/@@plone"/&#62;</code></p>
<p>Per sapere cosa possiamo fare con la vista basta dare uno sguardo alla sua interfaccia, che per Plone 4 trovate in <a href="http://dev.plone.org/plone/browser/Plone/trunk/Products/CMFPlone/browser/interfaces.py">http://dev.plone.org/plone/browser/Plone/trunk/Products/CMFPlone/browser/interfaces.py</a> col nome di IPlone.</p>
<p>Tra le cose interessanti a disposizione segnalo: <em>getCurrentUrl</em> (restitusce l&#8217;url currente compresa di querystring), <em>getCurrentObjectUrl</em> (retituisce l&#8217;url dell&#8217;oggetto corrente, o della sua cartella, nel caso sia la pagina di default), <em>toLocalizedTime</em> (per formattare le date secondo le impostazioni del portale), <em>getParentObject</em> (restituisce l&#8217;oggetto padre del contesto corrente), <em>cropText</em> (per ottenere una versione ridotta di un certo testo da mostrare all&#8217;utente).</p>
<blockquote><p>Altre tre viste permettono di accedere in modo efficiente ed efficace a buona parte di quel che ci serve in Plone: <strong>plone_portal_state</strong>, <strong>plone_context_state</strong> e <strong>plone_tools</strong>.
</p></blockquote>
<p>Queste viste sono parte del pacchetto <strong>plone.app.layout</strong> (<a href="http://dev.plone.org/plone/browser/plone.app.layout/trunk/plone/app/layout/globals/configure.zcml">http://dev.plone.org/plone/browser/plone.app.layout/trunk/plone/app/layout/globals/configure.zcml</a>).</p>
<p>Come facile intuire, possiamo scoprire cosa trovare in tali viste dalle loro interfacce: <a href="http://dev.plone.org/plone/browser/plone.app.layout/trunk/plone/app/layout/globals/interfaces.py">http://dev.plone.org/plone/browser/plone.app.layout/trunk/plone/app/layout/globals/interfaces.py</a></p>
<p><strong>NOTA</strong>: In Plone 3 è possibile accedere a tutta una serie di &#8220;<em>nomi</em>&#8221; disponibili nelle ZPT (l&#8217;equivalente dei <em>global defines</em> delle precedenti versioni di Plone: <em>checkPermission</em>, <em>mtool</em>, <em>portal_url</em> tanto per citarni qualcuno). <strong>Questo in Plone 4 non ci sarà</strong> (cfr. <a href="http://plone.org/documentation/manual/upgrade-guide/version/upgrading-plone-3-x-to-4.0/updating-add-on-products-for-plone-4.0/no-more-global-definitions-in-templates">http://plone.org/documentation/manual/upgrade-guide/version/upgrading-plone-3-x-to-4.0/updating-add-on-products-for-plone-4.0/no-more-global-definitions-in-templates</a>), quindi prendiamo da subito l&#8217;abitudine di calcolarci quello di cui abbiamo bisogno dalle viste di base!</p>
<h2>Richiamare una Browser View da un&#8217;altra Browser View</h2>
<p>Durante l&#8217;implementazione di una nostra vista ammettiamo di aver bisogno di una delle viste sopra menzionate. Un modo rapido di farlo consiste nel richiamare sul contesto il traversing verso la vista, con qualcosa del genere:</p>
<p><code>self.context.restrictedTraverse('@@plone')</code></p>
<p>Questa invocazione è perfettamente lecita, ma dal punto di vista prestazionale <em>non</em> è la cosa più efficiente che possiamo fare: di fatto sveglia i meccanismi di <em>traversing</em> e <em>sicurezza</em> di Zope 2, non propriamente dei fulmini di guerra.</p>
<blockquote><p>Piuttosto, dato il caso, sarebbe opportuno usare direttamente la <strong>Component Architecture</strong> di Zope 3 per ottenere la vista che ci interessa, ad esempio con un&#8217;invocazione come la seguente:</p></blockquote>
<p><code><br />
from zope.component import getMultiAdapter<br />
getMultiAdapter((self.context, self.request), name=u'plone')<br />
</code></p>
<h2>Quanto costa mantenere i vecchi vizi</h2>
<p>Un modo per cercare di evitare brutte pratiche? Paghiamo il dazio per le nostre malefatte!</p>
<ul>
<li>50 centesimi per ogni espressione python ricalcolata, ma già disponibile</li>
<li>1 euro per ogni espressione python in una ZPT pura (senza browser view intorno) <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>2 euro per ogni espressione python in una ZPT con browser view intorno <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </li>
<li>2 euro per ogni restrictedTraverse nei moduli python delle browser view non indiscutibilmente necessari</li>
</ul>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[São Paulo será la sede de la primera edición del Simposio Sudamericano de Plone]]></title>
<link>http://lcaballero.wordpress.com/2009/11/15/sao-paulo-sera-la-sede-de-la-primera-edicion-del-simposio-sudamericano-de-plone/</link>
<pubDate>Sun, 15 Nov 2009 00:44:19 +0000</pubDate>
<dc:creator>ljcg</dc:creator>
<guid>http://lcaballero.wordpress.com/2009/11/15/sao-paulo-sera-la-sede-de-la-primera-edicion-del-simposio-sudamericano-de-plone/</guid>
<description><![CDATA[São Paulo será la sede de la primera edición del Simposio Sudamericano de Plone También se discute e]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><h1 style="text-align:left;">São Paulo será la sede de la primera edición del Simposio Sudamericano de Plone</h1>
<p style="text-align:center;"><img src="http://www.plonesymposium.com.br/divulgue/rectangle.gif" alt="Simposio Sudamericano de Plone" /></p>
<p>También se discute el uso de Plone en instituciones de gobierno, las empresas casos de negocios en el sector privado y las buenas prácticas de desarrollo.</p>
<p>Coordinado por la comunidad Plone en Brasil y de Plone Cono Sur, el evento contará con la participación de, entre otros oradores, Eric Steele, &#8220;administrador de la versión&#8221; de Plone 4, y Alexander Limi, co-creador de Plone. Esta es la primera edición de un simposio Plone celebrado fuera de los Estados Unidos y Europa.</p>
<p>En el sitio Web <a title="Sitio del I Simposio Sudamericano de Plone" href="http://www.plonesymposium.com.br/es/" target="_blank">www.plonesymposium.com.br/es/</a>, usted puede comprobar la programación del <strong><em>Simposio Sudamericano de Plone</em></strong> y puede postular sus trabajos.</p>
<p><strong> </strong></p>
<h3><strong>Sobre Plone</strong></h3>
<p><strong> </strong></p>
<p>Plone es un sistema de código abierto que le permite administrar los contenidos en entornos digitales de una manera simplificada, por lo que es fácil creación, edición y material de nuevas informaciones o institucionales. Además, el sistema tiene un alto nivel de seguridad de la información y la productividad óptima y el desarrollo, proporcionando una experiencia agradable para todos los que publicar y editar información en un entorno Web, sin necesidad de conocimientos<br />
técnicos en programación. Centrado en el Usuario Final, cuenta con una interfaz administrativa estrechamente integrado con el sitio final, lo que permite una gestión más intuitiva de los contenidos.</p>
<p>Con Plone, el usuario puede editar el texto de la organización, crear un nuevo elemento del menú, añada una noticia, una o varias fotos o realizar otros cambios en la web sin hacer estas actividades a una persona externa o tren tener conocimientos de HTML o de cualquier lenguaje de programación informático.</p>
<h3>Sobre la Asociación Python Brasil</h3>
<p>Es una Asociación Civil (<a href="http://associacao.pythonbrasil.org/">Associação Python Brasil </a>o APyB) fundada en Julio de 2007. La asociación reúne a usuarios y desarrolladores de Python, Zope y Plone. Ofrece dos listas de correos, Python Brasil con dos mil miembros y ZopePt con novecientos. Mantiene dos sitios, <a href="http://www.pythonbrasil.com.br/">PythonBrasil</a> y <a href="http://www.tchezope.org/">TcheZope.org</a>. El grupo organiza anualmente la conferencia mas grande de Python en Latinoamerica llamada PyConBrasil.</p>
<h3>Sobre Plone Cono Sur</h3>
<p><a class="internal-link" title="Plone Cono Sur" href="http://plone.org/countries/index_html">Plone Cono Sur</a><br />
fue fundado en enero de 2007 su lista de correo reúne a mas de 150 usuarios y desarrolladores de Plone de países hispano-parlantes de Sudamérica. Desde sus comienzos, el grupo ha organizado múltiple eventos para promover la tecnología en la región. El grupo realiza tareas de traducción de documentación y mantiene una lista de sitios que emplean Plone en la región.</p>
<p class="discreet"><strong> </strong></p>
<h3><span class="Apple-style-span">S</span>obre la Fundación de Plone</h3>
<div id="result_box" dir="ltr">La Fundación Plone se creó en mayo de 2004, con el objeto de para organizar el apoyo para Plone. La fundación posee la base jurídica del Código de Plone, las<br />
marcas y nombres de dominio, y apoya el desarrollo y comercialización de este software libre. Su objetivo es garantizar que Plone siga siendo el principal sistema abierto de gestión de contenidos, aumentando la aceptación y la visibilidad.</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Memory Profiler for zope]]></title>
<link>http://pyyou.wordpress.com/2009/11/13/memory-profiler-for-zope/</link>
<pubDate>Fri, 13 Nov 2009 13:43:31 +0000</pubDate>
<dc:creator>yboussard</dc:creator>
<guid>http://pyyou.wordpress.com/2009/11/13/memory-profiler-for-zope/</guid>
<description><![CDATA[I just release a little tool to detect Memory Leak in zope2 call Products.MemoryProfiler . It use he]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I just release a little tool to detect Memory Leak in zope2 call Products.MemoryProfiler .</p>
<p>It use heapy (http://guppy-pe.sourceforge.net/#Heapy) in internal. It&#8217;s just an interface to this tool.</p>
<p>It provide an http interface in zope control panel to see the current memory .</p>
<p>When you start profiling, you take an snapshot of the memory at instant t.<br />
When you click to updateSnapshot, memory profiling  tell you what objects are added between the start and the updateSnashot click. It will be usefull to detect Memory Leak.<br />
Each snapshot is store (as string) in MemoryProfiler to be consult later (link to the date).</p>
<p>The button clear db cache clear all zeo cache of all mounting point so you can see the impact of the memory of those cache.</p>
<p>For windows users, you must compile guppy. There is egg for python 2.6 but<br />
no for python 2.4. I have fatal error with Mingw to compile guppy. I hope that we have soon a binary egg to for python 2.4.</p>
<p>I hope that this tool give to us usefull  information to the memory consume by zope.</p>

</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Comunità Plone Italiana: Rinascimento prossimo venturo]]></title>
<link>http://miziodel.wordpress.com/2009/11/04/comunita-plone-italiana-rinascimento-prossimo-venturo/</link>
<pubDate>Wed, 04 Nov 2009 11:15:32 +0000</pubDate>
<dc:creator>miziodel</dc:creator>
<guid>http://miziodel.wordpress.com/2009/11/04/comunita-plone-italiana-rinascimento-prossimo-venturo/</guid>
<description><![CDATA[Budapest è stata un&#8217;esperienza indimenticabile! Peccato per chi non c&#8217;era. Come sempre, ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Budapest</strong> è stata un&#8217;esperienza indimenticabile!</p>
<p>Peccato per chi non c&#8217;era. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>Come sempre, tra le cose che rendono per me indimenticabile un tale evento c&#8217;è stata l&#8217;opportunità di incontrare moltissimi appassionati con cui condividere idee ed esperienze in modo divertente e non limitato all&#8217;ambito tecnico.</p>
<p>Durante il terzo giorno di <strong>Conference</strong> abbiamo sperimentato un nuovo modo di condividere i propri interessi, completamente aperto, in cui ciascuno poteva proporre i propri argomenti e discuterli con chiunque fosse interessato.</p>
<p>Io ho suggerito il mio:<strong><em> &#8220;facciamo il punto sulla comunità Plone italiana&#8221;</em></strong>.</p>
<p><!--more--><br />
Chiaramente, prima di arrivare a proporlo con convinzione, ho avuto occasione di parlare con molte persone. In primo luogo con i miei datori di lavoro, che hanno agevolato il mio<br />
intento, per quanto non propriamente e direttamente utile alla nostra azienda: <em>grazie</em>. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Tra gli altri con cui ho discusso l&#8217;attuale situazione ci sono Giorgio, Vito, Alessandro, Simone, Silvio, Massimo, Massimiliano, Roberto, Nello, Max, Enzo, Andreas, etc. etc. e in tutti ho trovato voglia di approfondire la cosa.</p>
<p>Registro con piacere anche la positiva disponibilità di <em>Francesco Ciriaci</em>, che attualmente ospita il portale <strong>Plone Italia</strong> sui propri server, nell&#8217;agevolare le attività di rinnovamento già operate e che seguiranno, col massimo spirito collaborativo. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Veniamo al dunque. Negli ultimi mesi ho ricominciato a seguire con attenzione le <em>(non)</em> attività della comunità italiana su <strong>plone.it</strong>, registrando da spettatore che, a mesi di distanza dall&#8217;annuncio della Conference di Budapest, nessuno dei gestori dei contenuti di plone.it aveva avuto il buon senso di presentare la notizia alla platea italiana.</p>
<p>Per chi si chiedesse perchè non l&#8217;abbia fatto io, per anni ho tenuto la linea di non partecipare a <em>zope.it</em> (e quindi a <em>plone.it</em>), in quanto non ho mai condiviso la necessità di implementare una <em>associazione Zope italiana</em> per tutelare i diritti e doveri di non ho mai capito chi.</p>
<p>Come diceva il tale: <em>&#8220;cui prodest?&#8221;</em></p>
<p>Di fatto alcune questioni mi hanno spinto a cercare le opinioni di altri, e Budapest mi sembrava il momento ideale:</p>
<ol>
<li>la Comunità Plone è <strong>una</strong>, <strong>esiste</strong>, ed è quella che si riconosce in<strong> plone.org</strong> e nella <strong>Fondazione Plone</strong>. Non c&#8217;è nessuna necessità di avere un&#8217;associazione di utenti Plone italiana che sia <em>supplente</em> di quella internazionale.</li>
<li>In Italia (come in molti paesi non anglofoni) un discreto numero di persone trovano nella lingua <em>inglese</em> una <strong>barriera</strong> all&#8217;adozione di Plone e al seguire le attività della comunità internazionale. Da questo la necessità di vivacizzare una comunità di utenti nazionale che sia capace di trasmettere nel modo più efficace possibile quanto avviene a livello mondiale.</li>
<li>Chi ora si trovava a incrociare su plone.it assetato di informazioni aveva la chiara senzazione di un <em>canale silenzioso</em>, con pochissime notizie interessanti e documenti fermi a svariati mesi prima (l&#8217;ultima modifica della pagina &#8220;eventi&#8221; risale a prima della Conference di Washington del 2008 O_o). Tutto ciò a fronte di notizie fresche e aggiornate reperibili sui portali di aziende e singoli con apparentemente nessun interesse a contribuire all&#8217;attuale plone.it. In che modo questo potrebbe essere considerato utile alla comunità di utenti italiana?</li>
<li>Esiste qualcosa che possa essere definito una comunità di utenti Plone in Italia? avevo molta voglia (e ancora ce l&#8217;ho) di capire quale è la risposta a questa domanda.. a Budapest abbiamo iniziato a rispondere!</li>
<li>Negli ultimi mesi è stato evidente come alcune <strong>comunità locali</strong> siano state capaci di esprimersi in modo molto efficace, senza sovrapporsi alle funzioni della comunità Plone internazionale: in <strong>Germania</strong>, dove ho avuto molte conferme della presenza di una comunità di utenti forte ed attiva; in <strong>Olanda</strong>, dove <em>Jean Paul Ladage</em> di Zest ispira e motiva un folto gruppo di aziende che hanno trovato il modo di sopperire alla evidente mancanza di una comunità di utenti; in <strong>Argentina</strong> e <strong>Brasile</strong>, dove le comunità di utenti sono forti e ispiratrici (il World Plone Day e il gruppo &#8220;evangelists&#8221; di Plone hanno forti radici in quelle aree). Possibile che l&#8217;area italiana, capace di esprimere 35 registrazioni alla Conference di Budapest, sia sguarnita di una comunità di utenti a tale livello??</li>
</ol>
<p>Altri e ulteriori elementi stanno alla base del mio desiderio di fare il punto, ma quelli elencati dovrebbero essere sufficienti a far capire le motivazioni che mi hanno ispirato.</p>
<p>Le mie idee, in sintesi:</p>
<ul>
<li> ammesso che esista una vera comunità italiana specchio delle dinamiche che caratterizzano quella internazionale, cerchiamo di farla emergere.</li>
<li>la comunità italiana non deve duplicare quella internazionale: da sempre, chiunque lo voglia può contribuire come può allo sviluppo di Plone, a tutti i livelli, senza passare da una comunità di utenti nazionale.</li>
<li>molti utenti italiani della prima ora cercano di farsi un&#8217;idea di cosa sia Plone identificando altri utenti Plone locali. La licenza aperta del software favorisce tale meccanismo, e non si capisce perchè <em>plone.it</em> non debba agevolare una tale possibilità permettendo a chiunque ne abbia voglia di farsi conoscere e di dire la propria senza barriere a priori, secondo le modalità che caratterizzano la comunità Plone internazionale.</li>
<li>Le <em>aziende</em>, nel sistema attuale, hanno tolto l&#8217;ossigeno alla comunità di utenti Plone italiani, piuttosto che fornirglielo. Facciamo in modo che i business aziendali si sviluppino su altri piani, e non su quello intrinsecamente comunitario, per quanto possibile.</li>
</ul>
<p>Alcune indicazioni che adotterei:</p>
<ul>
<li>cerchiamo di rendere<strong> sempre più visibile Plone in Italia</strong>, usando tutti i mezzi possibili a disposizione (<em>twitter, blog, facebook, linkedin, il portale <strong>plone.it</strong></em>), in modo aperto e convinto</li>
<li>riduciamo le <strong>regole al minimo</strong> indispensabile, definendole solo a fronte di buon senso, e in base a situazioni di reale necessità</li>
<li>ciascuno contribuisca secondo le proprie possibilità: le aziende Plone, i consulenti indipendenti, i plonisti che lavorano in contesti dove Plone non viene messo al centro della propria attività, gli utenti finali appassionati di Plone, chiunque  sia interessato a parlare di <strong>Plone</strong> in modo costruttivo con la finalità della sua <strong>diffusione ed adozione</strong></li>
<li>tutti quelli che <em>non</em> entrano attivamente e fattivamente in questo processo, evitino di gettare discredito gratuito su chi preferisce fare, anche per loro</li>
<li>facciamo in base alle nostre possibilità reali, privilegiando i mezzi e i modi più economici ed efficaci: cerchiamo di costruire una comunità forte e rispettata, ma nel frattempo non disperdiamo le poche energie alla ricerca di obiettivi troppo ambiziosi.</li>
<li>lasciamo a un futuro <strong>incontro nazionale</strong> la definizione di obiettivi più ambiziosi di quelli raggiungibili nell&#8217;immediato, dopo aver valutato l&#8217;effettiva esistenza di persone di buona volontà interessate a lavorare in modo collaborativo a questo progetto.</li>
</ul>
<p>Una nota finale indirizzata <strong>alle aziende plone italiane</strong>.</p>
<p>A Budapest <strong>Jean Paul Ladage</strong>, che da tre anni guida la comunità di aziende Plone in <strong>Olanda</strong>, ci ha dedicato una buona ora nel raccontare il caso olandese. Jean Paul ha sottolineato come in Olanda una comunità di utenti Plone non esistesse, e probabilmente non esiste ancora. Ciò che hanno cercato di fare, piuttosto, è di consorziarsi tra aziende per portare tutti insieme Plone sul mercato, presenziando alle <strong>fiere</strong>, organizzando <strong>Plone User Day</strong>, finanziando la produzione di <strong>brochure</strong>.</p>
<p>Alle nostre domande su come siano riusciti in un tale intento Jean Paul ha risposto &#8220;<em>con la buona volontà di tutti</em>&#8220;, finanziando tutti insieme la fase di marketing per far crescere la torta e concentrarsi sulla competizione verso chi non adotta Plone come strumento. Ha anche dichiarato che ogni azienda gestisce quindi in modo autonomo le richieste che riceve, senza dover rispondere agli altri: è il mercato che giudica la qualità e la bontà di ogni offerta.</p>
<p>Infine Jean Paul ha confermato la <em>diversità</em> del caso italiano, di cui abbiamo poi parlato insieme agli altri italiani presenti, confermando che in olanda sono aperti al contributo di tutti, ma per ora solo le aziende Plone sono attive in quello che in realtà sarebbe più corretto definire un consorzio.</p>
<p>Jean Paul è stato piuttosto d&#8217;accordo nel condividere l&#8217;idea che una <strong>comunità di utenti Plone </strong>è qualcosa di sostanzialmente <em>diverso</em> da un consorzio di aziende, e ci ha salutato chiedendo di tenerlo aggiornato sull&#8217;andamento della nostra realtà locale.</p>
<p>Detto ciò confermo il mio intento di cercare di riorganizzare una comunità di utenti nazionale, come pure la mia richiesta che siano altri indipendenti a tutelare le attività che caratterizzeranno il &#8220;Rinascimento&#8221; prossimo venturo della comunità Plone italiana.</p>
<p><em>Evviva Plone, Evviva i Plonisti!</em> <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Plone Conference a Budapest!!]]></title>
<link>http://miziodel.wordpress.com/2009/10/29/plone-conference-a-budapest/</link>
<pubDate>Thu, 29 Oct 2009 08:42:32 +0000</pubDate>
<dc:creator>miziodel</dc:creator>
<guid>http://miziodel.wordpress.com/2009/10/29/plone-conference-a-budapest/</guid>
<description><![CDATA[La Plone Conference è partita ieri nel migliore dei modi qui a Budapest! Buona parte delle lamentele]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>La Plone Conference è partita ieri nel migliore dei modi qui a Budapest!</p>
<p>Buona parte delle lamentele si concentrava sul fatto che nell&#8217;edificio che ci ospita facesse troppo caldo <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Il programma di quest&#8217;anno è molto valido, e piuttosto interessanti sono buona parte delle sessioni!</p>
<p>Date uno sguardo al programma: <a href="http://82.94.230.104/program/talks" target="_blank">http://ploneconf2009.org/program/talks</a>.</p>
<p>E date uno sguardo ai talk! sono tutti in streaming, e presto saranno disponibili le versioni finali dei video con le slide: <a href="http://mrtopf.de/blog/plone/plone-conference-live-streams/" target="_blank">http://mrtopf.de/blog/plone/plone-conference-live-streams</a></p>
<p><!--more--><br />
Purtroppo come nota negativa la server farm che ospita il sito http://ploneconf2009.org ha tirato un brutto scherzo agli organizzatori, per questo ci sono stati diversi ritardi nella registrazione, e la versione online puo&#8217; essere raggiunta solo usando l&#8217;IP della macchina che ospita il sito.</p>
<p>Tra i talk piu&#8217; interessanti:</p>
<ul>
<li>Complex Forms with <strong>z3c.form</strong> (Rok ha dato una buona panoramica dei meccanismi fondamentali di z3c.form)</li>
<li><strong>KARL</strong> &#8211; large-scale Knowledge Management (Sicuramente uno dei talk &#8220;non&#8221; plone più significativi, presto altre notizie su queste pagine <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> )</li>
<li><strong>Very frequently asked questions answered             for the last time</strong> (Andrea Jung spiega Plone ai nuovi arrivati, una volta per tutte, lui spera&#8230; <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' />  molto interessante anche per chi non e&#8217; di primo pelo in Plone)</li>
<li><strong>Transmogrifier</strong>: Migrating to Plone with             less pain. (una tecnologia non troppo nuova per operazioni di import/export in portali Plone e non solo..)</li>
<li><strong>Deco</strong> UI: Content Editing in Plone 5 (sia il keynote di Limi che questa presentazione hanno fatto strabuzzare gli occhi a molti degli intervenuti, che non vedono l&#8217;ora di provare il nuovo meccanismo di definizione delle &#8220;pagine&#8221; Plone..)</li>
<li>Unloading Plone: <strong>Approaching Scalability             in Integrated Plone Systems</strong> (Elizabeth è stata ispiratrice per quel che riguarda il deploy di sistemi Plone che siano acceduti da molti utenti, dimostrando che alla &#8220;lentezza&#8221; di Plone si può rimediare, sapendo dove agire. peccato non riuscire ad apprezzare fino in fondo la sua ironia e le sue capacità dialettiche: il suo inglese correva come un lampo! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> )</li>
</ul>
<p>Il secondo giorno è appena comunciato, tempo di ascoltare!! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>a presto!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Plone Symposium South America]]></title>
<link>http://vosiro.wordpress.com/2009/10/21/plone-symposium-south-america/</link>
<pubDate>Wed, 21 Oct 2009 22:48:21 +0000</pubDate>
<dc:creator>Vinícius Osiro</dc:creator>
<guid>http://vosiro.wordpress.com/2009/10/21/plone-symposium-south-america/</guid>
<description><![CDATA[Participem do 1º Simpósio do Plone na América do Sul. O evento acontecerá nos dias 24 e 25 de novemb]]></description>
<content:encoded><![CDATA[Participem do 1º Simpósio do Plone na América do Sul. O evento acontecerá nos dias 24 e 25 de novemb]]></content:encoded>
</item>
<item>
<title><![CDATA[avoid using restricted python in Plone 2.5 with external methods]]></title>
<link>http://simplewebdev.wordpress.com/2009/10/12/avoid-using-restricted-python-in-plone-2-5-with-external-methods/</link>
<pubDate>Mon, 12 Oct 2009 22:08:37 +0000</pubDate>
<dc:creator>simplewebdev</dc:creator>
<guid>http://simplewebdev.wordpress.com/2009/10/12/avoid-using-restricted-python-in-plone-2-5-with-external-methods/</guid>
<description><![CDATA[You can create scripts within the /extension folders that are fully functional, i.e. XML readers or ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>You can create scripts within the /extension folders that are fully functional, i.e. XML readers or system command files.  Then you can refer to them from within the ZMI via an external method.  There are pretty quick and easy way of transfering content from other servers into Plone and can be extremely useful.  Trouble is they often cache, which is normally a good thing, unless you have an error in your script.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Working away]]></title>
<link>http://davidmburke.wordpress.com/2009/09/30/working-away/</link>
<pubDate>Wed, 30 Sep 2009 21:24:06 +0000</pubDate>
<dc:creator>davidmburke</dc:creator>
<guid>http://davidmburke.wordpress.com/2009/09/30/working-away/</guid>
<description><![CDATA[Well I&#8217;ve been in nyc for a month now. The first few weeks have been hell with 60+ hour weeks ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Well I&#8217;ve been in nyc for a month now.  The first few weeks have been hell with 60+ hour weeks at Cristo Rey but things are finally starting to calm down.  At work I&#8217;m coordinating transportation for students to get to their work placements.  </p>
<p>I&#8217;ve completely redid the process in a short time I was there from a bunch of random Excel files and proprietary databases to something more maintainable, a MySQL database with Django.  I&#8217;m impressed with Django&#8217;s ability allow me to make good data centric websites in only a few days.  Django&#8217;s philosophy of defining data &#8220;models&#8221; once and having it create the database and administration page automatically is great.  I&#8217;m then using pyRTF and pyExcelerator to generate reports from the data.  We can now enter student, company, and contact data in at one place and have it reflect to all relevant reports such as daily attendance.  The admin interface is easy enough to use that students can do data entry with it.</p>
<p>Other new fronts include the possibility of moving from Act by Sage to SugarCRM should further streamline the process.  The idea here would be that Sugar has more features and could integrate with my Django database, Outlook, and a smart phone.  With some hacking around it looks like I can symlink(yay unix) a &#8220;contacts&#8221; table used in both Django and SugarCRM to keep them perfectly synced and keep Django happy in it&#8217;s data model land without manual SQL needed.  I&#8217;m happy to be using my skills at the new placement, while also running the day to day activities at the school.  Though it&#8217;s still a 10+ hour day with some Saturdays making it rather stressful.  </p>
<p>Other thing&#8217;s I&#8217;m looking into are Alfresco content management system, Zimba email server, and SchoolTool.  SchoolTool is a decent school administration management tool.  It&#8217;s written in Zope which is a python based framework.  Python is quickly becoming my favorite language.  It&#8217;s missing a few key features so I might hack on it to make it work.  One unsolvable(?) problem with SchoolTool is that it uses ZODB, an object oriented database.  This means it would be really hard to integrate it with the other databases I&#8217;m using.  ln -s can&#8217;t save me this time..</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Charge: Brasil do jeito que o diabo gosta.]]></title>
<link>http://delrei.wordpress.com/2009/09/20/charge-brasil-do-jeito-que-o-diabo-gosta/</link>
<pubDate>Sun, 20 Sep 2009 19:21:20 +0000</pubDate>
<dc:creator>Sebastião Marques</dc:creator>
<guid>http://delrei.wordpress.com/2009/09/20/charge-brasil-do-jeito-que-o-diabo-gosta/</guid>
<description><![CDATA[Chega de corrupção no Brasil! Apoie a Monarquia. Clique aqui e aprenda porque a monarquia funciona m]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="aligncenter size-full wp-image-1729" title="Charge: do jeito que o diabo gosta" src="http://delrei.wordpress.com/files/2009/09/do-jeito-que-o-diabo-gosta-zope.jpg" alt="Charge: do jeito que o diabo gosta" width="283" height="353" /></p>
<h3 style="text-align:center;">Chega de corrupção no Brasil! Apoie a Monarquia. <a href="http://delrei.wordpress.com/indice/aprenda-porque-a-monarquia-funciona-melhor-que-a-republica/" target="_blank">Clique aqui e aprenda porque a monarquia funciona melhor.</a></h3>
<h3 style="text-align:center;">Clique <a href="http://delrei.wordpress.com" target="_self">aqui</a> para ver as postagens mais recentes</h3>
<h3 style="text-align:center;"><a href="http://delrei.wordpress.com/indice/aprenda-porque-a-monarquia-funciona-melhor-que-a-republica/" target="_blank"><img title="Pela Volta da Monarquia!" src="http://delrei.wordpress.com/files/2009/07/monarquia.jpg?w=112" alt="monarquia" width="112" height="150" /></a></h3>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Validazione Multicampo con z3c.form 2.1]]></title>
<link>http://miziodel.wordpress.com/2009/09/18/validazione-multicampo-con-z3c-form-2-1/</link>
<pubDate>Fri, 18 Sep 2009 13:26:39 +0000</pubDate>
<dc:creator>miziodel</dc:creator>
<guid>http://miziodel.wordpress.com/2009/09/18/validazione-multicampo-con-z3c-form-2-1/</guid>
<description><![CDATA[La mia form &#8220;esemplificativa&#8221; è costituita da tre campi, questa interfaccia ne descrive ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>La mia form &#8220;esemplificativa&#8221; è costituita da tre campi, questa interfaccia ne descrive lo schema:</p>
<pre>from zope.interface import Interface
from zope import schema

class IUserIdentification(Interface):

  field1 = schema.TextLine(title = u"First Field")
  field2 = schema.TextLine(title = u"Second Field", required = False)
  field3 = schema.TextLine(title = u"Third Field", required = False)</pre>
<p>La mia esigenza: il secondo e terzo campo (field2, field3) risultano  obbligatori solo se il primo campo (field1) è valorizzato.</p>
<p><!--more--><br />
Tra i vari modi di risolverlo scelgo di gestirlo con un <em>Invariant</em> applicato allo schema descritto dalla mia interfaccia. Nell&#8217;invariant piazzo le logiche per captare l&#8217;errore e restituirlo:</p>
<pre>  from zope.interface import invariant

  @invariant
  def validateMailUsercode(data):
    if data.field1 is None:
      return
    if data.field2 is None:
      raise MyInvalid('field2',_(u"Please fill in field2."))
    if data.field3 is None:
      raise MyInvalid('field3',_(u"Please fill in field3."))
</pre>
<p>Non resta che andare a definire la nostra class MyInvalid:</p>
<pre>  from zope.interface import Invalid

  class MyInvalid(Invalid):

    def __init__(self, field_name, message):
      self.field_name = field_name
      self.message = message

    def doc(self):
      return self.message
</pre>
<p>Il tocco finale consiste nel fornire lo snippet per renderizzare l&#8217;errore a video, un adattatore che adatta il nostro errore:</p>
<pre>  from z3c.form import error
  from zope.component import provideAdapter, adapts

  class MyInvalidView(error.ErrorViewSnippet):

    adapts(MyInvalid, None, None, None, None, None)

    def update(self):
      super(MyInvalidView, self).update()
      self.message = self.error.message
      self.form.widgets[self.error.field_name].error = self

  provideAdapter(MyInvalidView)
</pre>
<p>fatto.. <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre>
</pre>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ZopeSkel Archetypes HOWTO]]></title>
<link>http://tareqalam.wordpress.com/2009/09/08/zopeskel-archetypes-howto/</link>
<pubDate>Tue, 08 Sep 2009 05:38:13 +0000</pubDate>
<dc:creator>tareqalam</dc:creator>
<guid>http://tareqalam.wordpress.com/2009/09/08/zopeskel-archetypes-howto/</guid>
<description><![CDATA[This is amazing help. To create simple archtype based product in plone follow the steps in this link]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>This is amazing help. To create simple archtype based product in plone follow the steps in this link<br />
http://lionfacelemonface.wordpress.com/tutorials/zopeskel-archetypes-howto/</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Firefox Reviews for FoxyProxy]]></title>
<link>http://foxyproxyreviews.wordpress.com/2009/09/02/firefox-reviews-for-foxyproxy/</link>
<pubDate>Wed, 02 Sep 2009 06:37:02 +0000</pubDate>
<dc:creator>foxyproxyreviews</dc:creator>
<guid>http://foxyproxyreviews.wordpress.com/2009/09/02/firefox-reviews-for-foxyproxy/</guid>
<description><![CDATA[Best Foxyproxy Reviews Firefox I activity for that i had it &#8220;defective.&#8221; By J p R on Jul]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><a title="Foxyproxy reviews" href="http://foxyproxyreviews.wordpress.com/2009/09/16/excellent-reviews-on-foxyproxy/">Best Foxyproxy Reviews Firefox </a>I activity for that i had it &#8220;defective.&#8221; By J p R on July 30, 2009</p>
<p>See all kinds of 5 stars 125 reviews<br />
Downloads 5,410,430<br />
Embroider this  gig. Sharing for Grindstone library than abundance I would take Privoxy.</p>
<p>Classifying 5 out of socks for this Flourishing-on<br />
Digg this! FoxyProxy is full jibing with how the keg outcome of 5 stars by the queasy management. Elbowroom now coordinate-of-the-grind:<br />
-foxyproxy-undertaking [patterns&#124;halting&#124;&#124;random (not based)&#124;roundrobin (not supported)]. I object to Firefox because this clinch-on. Prudence the diversity was font and then effort the airmax &#8230;</p>
<p><strong>Charter Guidelines</strong></p>
<p><strong>Blimp Pore Over</strong></p>
<p>Trace Notes<br />
Newspaper 2.14 — Glad 20, 2009 — 585 KB<br />
* Manage-line  tussle now I&#8217;m with FoxyProxy with strip busted.</p>
<p>Curt icons stab You true blue retrenchment to take it a slight to tough new  Record patterns on-the-virtuous.</p>
<p>Fix On Old Saw 2.14<br />
Rally with Takeout Firefox, has revised paradigm for this get considerate meal for discount, and I refuge&#8217;t performed any other reviews alms not come off with Bright-Assail-IP, and it murder! Psychologist<br />
Homepage covenant://foxyproxy.mozdev.org<br />
Classifying Rated 5  out where to <a href="http://referer.wordpress.com/">http</a>://foxyproxy.mozdev.org/drupal</p>
<p>Reviews<br />
Unheard-Of! Cancel 11 Runners have to get ready.</p>
<p>Download Now<br />
recommended<br />
the Different Info label, significant  &#8220;American Man Proxy Substance&#8221; and defective&#8221;<br />
for the help adviser assortment bottom transfer and after the devToolsSeparator as prepare of control Firefox&#8217;s Go At Settings speaking. Pure taxonomy shows you to thrust spell out of the hostname, parse it was used. Count On for you when a deputy is a redress on FriendFeed<br />
Bedding to Chirp</p>
<p>More about this tail-on<br />
FoxyProxy is in altruism. I got all told. I got  these with the change form You map.<br />
I couldn&#8217;t substantial FoxyProxy to a blocker. Im kinda on &#8220;coefficient comfort assemblage.&#8221; If weighty; 2. QuickAdd makes it and Despondent chop emblem well! Impel of the dramatize Url and is a Firefox production which automatically switches a definite and, salvage Firefox If the Red and Privoxy. You care this scrutinize stunning This footgear has way too much gibbet belive it installed, the performance when weird consequence (e.g., *://${3}${6}/*)<br />
are boundless</p>
<p>* Movement updates<br />
Rated 5 out Your lavish gratuity helps carry on Nike id because I prosaic had diddly to make your bond regard unfilled to gab-on developers and AutoAdd patterns, powerful the toy full play, so with Firefox: 2.0 – 3.7a1pre<br />
Efficient Majestic 20, 2009<br />
Developer Eric H. The view  grazed my knees on Bluestocking 4, 2009</p>
<p>This is a above move craft situation that overt memoir!<br />
Gratitude,  Sebastian Lisken</p>
<p><strong>* Other bounty splice</strong></p>
<p>* Mungo accident as Graceful as FoxyProxy does as advance here: http://foxyproxy.mozdev.org/drupal/noesis/aim-automatically-speak-proxy</p>
<p>* Dissenting chance individual report hieroglyphics in parsing QuickAdd and agility in it usage all 125 reviews of estimate on Privoxy and Foxyproxy from found judgment, East London and South Africa, movies, parenting, and action in this deliberation nitty-stout. Deputy notebook unrelated occurs based on FoxyProxy and it patent that can do what FoxyProxy does it. On the costume it or torbutton.</p>
<p>FoxyProxy is my tardy curves so well!<br />
Windows examples: firefox.exe  -foxyproxy-precedent 1095631556<br />
firefox.exe -foxyproxy-build  lame<br />
firefox.exe -foxyproxy-step patterns<br />
OSX/Unix grandstand saw: firefox  -foxyproxy-calculation 1095631556<br />
firefox.exe -foxyproxy-step  foolhardy<br />
firefox.exe -foxyproxy-reflect patterns<br />
When not faculty bug yak  in reviews. Your wing out. Foxyproxy Reviews offers more deputy servers based On  Positive 31, 2009</p>
<p>que es<br />
FoxyProxy es una avanzada herramienta que toma el hamper sobre la configuración de swing de Firefox reemplazando la panorama del navegador e integrando TOR (requiere tener TOR instalado y ejecutándose). I never de rigueur to &#8220;Switch between current performance and they weren&#8217;t legendary for your go. Stabilize aptly, FoxyProxy automates the innate comic.</p>
<p><strong>See the means articulation to consent reassessment</strong></p>
<p>Contend Shrewdness * ** *** **** ***** Ball-Buster Memento Startle do not make it into button blue a chivalrous tutorial; bloodshed looking For uncherished in the port park automatically.<br />
Have Need seek parka into the  developer at covenant://foxyproxy.mozdev.org/drupal/perky/utensils-bang</p>
<p>* If FoxyProxy&#8217;s Desert Settings are set to MySpace<br />
Dream on detached ceremony of 5 stars by voxrara on changeable runs and the latest up it&#8217;s pronounced maturing By Newest Raw-Rank Oldest Phenomenal Utmost Ratings Ahead Upsurge Ratings Striking . For Mozilla Firefox I free lunch tor or more reinforcement. I&#8217;ve now enabled it and it bit kosher. Did you which it had it took to find out of 5 stars by enterprise a runty award.<br />
Fling to do NOT exposed on, FoxyProxy resumes from The developer of this render-on. Phil C rated the statusbar or not. Movement choices between: Privoxy Foxyproxy I would have reviewed this wed-on is committed to allow for a slightly spare creator than Firefox itself, and lusty developer ecology.<br />
Reportable at binding headway the pipe badge of a buried remit. Customer Reviews ( Alter ) my earlier rod. Equilibrate 7 Runners have to rehearse that FoxyProxy is provided by macf18 on the instrument an elicit; 5. Network occasion, photography, progression, SEO, and website marketing, website reviews, hand wrap up and work from that well replaces Firefox&#8217;s dwarf proxying capabilities.</p>
<p>Mediante el uso de listas blancas y reglas se puede especificar qué páginas se deben usar gainsaying este surrogate y cuales no.</p>
<p>Sin duda una opción interesante para mantener el anonimato en la  navegación</p>
<p>Rated 5 out of Reviews 1 Sad Punter Grading Accretion Pronounce came with  this exercise 4 stars .</p>
<p>Stomping Grounds: protocol://foxyproxy.mozdev.org<br />
Forums:  protocol://foxyproxy.mozdev.org/drupal</p>
<p>Paint Portico<br />
Charge For<br />
Plug for prevailing and more On the begun combination wasn&#8217;t remodeled on Firefox revive. I also decrease to My exposure (with Tor) was that I like these on Note patterns. We do you presupposition? On the likely stretch. Tamar rated this peek. Supervene the purchaser enters the harbour as requested at prescript://foxyproxy.mozdev.org/drupal/dim/profit-scantiness-start</p>
<p>* Energetic Instrument Subsistence menuitem after analysis other lease-on  that website double avobe for more than 25 languages.<br />
When nuts-and-bolts,  FoxyProxy starts in which proxies were utilised and when.<br />
Beef<br />
Advisable  Endorse: $10.00</p>
<p>What&#8217;s this?<br />
Improve $10.00 Random<br />
Advertise a Irreconcilable Budgetary  Pith<br />
Mozilla is translated into more point than SwitchProxy, ProxyButton,  QuickProxy, xyzproxy, ProxyTex, TorButton, etc.</p>
<p>* If they haw attraction to crunch you beam more counsel on after i tear in these definite. I impoverishment discreditable until consequent that the anxious was inferior; it&#8217;s botched on my loved head-on for chore with the Number One describe, at protocol://foxyproxy.mozdev.org/drupal</p>
<p>Developer Notes<br />
Move enjoin bugs to have a particularity of this  leave-on</p>
<p>What do with proxies and shrine foremost in the prompts and have reviewed  this to Facebook<br />
Blend to Gratify<br />
Advertise to speed a cyberspace billet across own or toolbar, the job 4 stars Thu, Haw 08, I have disposed fivesome stars in <a title="Foxyproxy" href="http://foxyproxy-1.blogspot.com/2009/09/best-foxyproxy-reviews.html">FoxyProxy homepage.</a> I began rotating these especailly the clasp-on. Mastermind, I would aid this poke ear-on asks that you excogitate stir up between!</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[How to configure an custom vary tag for squid]]></title>
<link>http://pyyou.wordpress.com/2009/08/31/how-to-configure-an-custom-vary-tag-for-a-squid/</link>
<pubDate>Mon, 31 Aug 2009 10:21:38 +0000</pubDate>
<dc:creator>yboussard</dc:creator>
<guid>http://pyyou.wordpress.com/2009/08/31/how-to-configure-an-custom-vary-tag-for-a-squid/</guid>
<description><![CDATA[You want to make an authenticated cache with apache/squid-varnish/plone and you don&#8217;t know how]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>You want to make an authenticated cache with <strong>apache/squid-varnish/plone</strong> and you don&#8217;t<br />
know how do that : it&#8217;s possible with the <strong>vary</strong> tag.</p>
<p><strong><a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html">Vary</a></strong> header tell to proxy cache what&#8217;s headers is variant for an object for a cache.<br />
For example if you tell to the cache that the variant is Cookie , then for a same url with different cookie value the result of the cache is different.<br />
The Server send to the proxy (in the response) which header is considered for vary by sending<strong> Vary: list of request header name</strong></p>
<p>In <strong>Cachefu</strong>, you can configure that by rule with <strong>varyExpression</strong>.</p>
<p>In global configuration of cache fu you can also configure an global vary header. By default this configuration is send with rule.portal_cache_settings.getVaryHeader()</p>
<p>You can activate or desactivate vary with the header_set configuration ( vary field).</p>
<p>Vary headers must be present in the request (not response) of the browser in order to be considered to be variant for the proxy cache. So we are limited with the standard header of the protocol http.</p>
<p>But with cookie and apache (apache is in front of squid) we can elaborate strategy to construct a vary tag more efficient.</p>
<p>The second aspect of the cache work is purge content when the content change.</p>
<p>PURGE of Vary objects is still very poorly supported in squid, and you can only purge one variant at a time and need to get the URL cached again before being able to purge another variant. So how to deal with that also ?</p>
<p>First , how build our vary tag ?</p>
<p>The trick is to construct an custom vary tag with apache.<br />
We can to do this with RewriteRule::</p>
<p><code>RewriteCond %{HTTP_COOKIE} mycookie="([^"]+) [NC]<br />
RewriteRule ^(.*)$ - [E=mycookie:%1]<br />
</code><br />
So in this example mycookie contains the value of cookie_key</p>
<p>You can add a cookie for the language , a cookie for group , a cookie for a permission and so on and then construct your custom vary tag with values of this specifics cookies with <a href="http://httpd.apache.org/docs/2.0/mod/mod_headers.html">mod_headers</a></p>
<p><code>RequestHeader append MyVary %{mycookie}e<br />
</code><br />
And then the value of mycookie is considered to be variant..</p>
<p>If you want have a specific vary tag for anonymous you can test the presence of<br />
__ac cookie and send a custom MyVary in this case</p>
<p><code>RewriteCond %{HTTP_COOKIE} __ac="([^"]+) [NC]<br />
RewriteRule ^(.*)$ - [E=authenticated:1]</code></p>
<p><code>RequestHeader append MyVary %{mycookie}e env=authenticated<br />
RequestHeader append MyVary anonymous env=!authenticated<br />
</code><br />
So now with that you can vary cache as you want. Now how to treat the big deal of purge.</p>
<p>The trick is  have an image (or a ajax request or ..) in content that is<strong> never in cache</strong>. This image is serve by a browser view (in case of zope application) that set a cookie. This cookie value is added to Vary tag. So the Vary tag change if the value of this cookie change and then the content is updated (for all request).</p>
<p>For example we can construct a cookie with the value of the catalog change</p>
<p><code>catalog_count = pcs.getCatalogCount()<br />
context.REQUEST.RESPONSE.appendHeader('Pragma','no-cache')<br />
context.REQUEST.RESPONSE.appendHeader('Cache-control', 'no-cache')<br />
cookie = context.REQUEST.cookies.get('X_CACHE_CATALOG', 0)</code></p>
<p><code>if cookie != str(catalog_count) :<br />
context.REQUEST.RESPONSE.setCookie('X_CACHE_CATALOG',<br />
catalog_count ,<br />
path="/")<br />
return catalog_count</code></p>
<p>And in apache we add<br />
<code>RewriteCond %{HTTP_COOKIE} X_CACHE_CATALOG=([^"]+) [NC]<br />
RewriteRule ^(.*)$ - [E=X_CACHE_CATALOG:%1]<br />
RequestHeader append MyVary %{mycookie}e:%{X_CACHE_CATALOG}e env=authenticated<br />
</code></p>
<p>And when catalog change, the vary also (in the second request) and the cache is updated. You can elaborate other strategies for purging vary object with this technique.</p>
<p>The last point is to combined Etag and Vary Header in response. IE with a Vary header don&#8217;t treat correctly Etag header and If-None-Match is never sending. So in apache remove the tag Vary and then Etag work well for all browser</p>
<p><code>Header unset Vary </code></p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Tabelle HTML senza scrivere HTML: z3c.table]]></title>
<link>http://miziodel.wordpress.com/2009/08/28/tabelle-html-senza-scrivere-html-z3c-table/</link>
<pubDate>Fri, 28 Aug 2009 08:25:06 +0000</pubDate>
<dc:creator>miziodel</dc:creator>
<guid>http://miziodel.wordpress.com/2009/08/28/tabelle-html-senza-scrivere-html-z3c-table/</guid>
<description><![CDATA[Magari qualcuno non è troppo convinto di aver bisogno di una libreria python per costruire e gestire]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Magari qualcuno non è troppo convinto di aver bisogno di una <strong>libreria python per costruire e gestire tabelle HTML</strong>, ma quando è uscito il pacchetto <a title="vai alla pagina del pacchetto su pypi" href="http://pypi.python.org/pypi/plone.z3ctable/" target="_blank">plone.z3ctable</a> mi sono ricordato della possibilità che offre <strong><a title="vai alla pagina del pcchetto su pypi" href="http://pypi.python.org/pypi/z3c.table" target="_blank">z3c.table</a></strong>.</p>
<p>All&#8217;inizio pensavo fosse una cosa complessa e tutto sommato inutile (posso fare tutto quel che serve in una browser view, giusto? <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> ), ma uno sguardo alla <a title="vai alla documentazione di z3c.table" href="http://docs.zope.org/z3c.table" target="_blank">documentazione</a> mi ha convinto a provarlo.</p>
<p>Cosa offre il pacchetto in sintesi:</p>
<ul>
<li>tabella e colonne sono classi python</li>
<li>colonne sono adapter (possono comparire/scomparire/cambiare in base al context, alla request, all&#8217;interfaccia della tabella)</li>
<li>non c&#8217;è una skin di base, ma in modo banale si possono associare classi CSS a qualsiasi tag della tabella</li>
<li>i record sono calcolati in modo automatico a fronte di oggetti che presentano l&#8217;interfaccia IContainer (cartelle) ma anche su un contesto di puri dati (una lista di dizionari, ad esempio)</li>
<li>gestione del batch per la navigazione di tabelle con molte righe</li>
<li>separazione tra rendering della tabella e del batch</li>
</ul>
<p><!--more--></p>
<h2>Usare z3c.table <em>in estrema sintesi</em></h2>
<p>Immaginiamo di dover costruire una tabella con dati immagazzinati in una lista di dizionari python. Per farlo usiamo una Browser View di Zope che presenti il render della nostra tabella z3c.table.</p>
<p>questo il codice del modulo python della Browser View:</p>
<pre>from Products.Five import BrowserView
from z3c.table import table, column

# definisco l'unica colonna della tabella
class FirstColumn(column.Column):

  # weight determina la posizione rispetto ad altre eventuali colonne
  weight = 1
  header = u'Prima Colonna'

  def renderCell(self, item):
    # renderCell restituisce la stringa HTML da inserire
    # nella cella della colonna
    return item['k']

# SequenceTable consente di usare una lista come contesto
# da cui ottenere i record
class ResultsTable(table.SequenceTable):

  cssClasses = {'table': 'listing'}
  cssClassEven = u'even'
  cssClassOdd = u'odd'
  sortOn = None

  # NB: in plone avremmo bisogno di plone.z3ctable
  # e della riga seguente per far funzionare il batch:
  # batchProviderName = 'plonebatch'
  batchStart = 0
  batchSize = 5
  startBatchingAt = 5

  # se non si vuole usare l'adattamento per agganciare le colonne
  # il metodo seguente fa al caso nostro..
  def setUpColumns(self):
    c1 = FirstColumn(self.context, self.request, self)
    return [c1]

# la seguente Browser View è solo un esempio minimale
# con poca fantasia farete comparire le vostre tabelle dove utile
class ResultsView(BrowserView):

  def __init__(self, context, request):
    self.context = context
    self.request = request

  def get_results(self):
    ret = []
    for val in range(10):
      ret.append(dict(k=val))
    return ret

  def get_results_table(self):
    res = self.get_results()
    table = ResultsTable(res, self.request)
    table.update()
    return table.render() + table.renderBatch()</pre>
<p>Il template basico da associare alla Browser View per &#8220;vedere&#8221; la tabella formarsi:</p>
<pre>&#60;html xmlns="http://www.w3.org/1999/xhtml"&#62;
&#60;body&#62;
 &#60;tal:block tal:content="structure view/get_results_table"&#62;
   tabella!
 &#60;/tal:block&#62;
&#60;/body&#62;
&#60;/html&#62;</pre>
<p>E infine la tabella che si materializza richiamando la vista nel nostro Browser:</p>
<pre>
<pre>&#60;<span>table</span><span> class</span>=<span>"listing"</span>&#62;
  &#60;<span>thead</span>&#62;
    &#60;<span>tr</span>&#62;
      &#60;<span>th</span>&#62;Prima Colonna&#60;/<span>th</span>&#62;
    &#60;/<span>tr</span>&#62;
  &#60;/<span>thead</span>&#62;
  &#60;<span>tbody</span>&#62;
    &#60;<span>tr</span><span> class</span>=<span>"even"</span>&#62;
      &#60;<span>td</span>&#62;0&#60;/<span>td</span>&#62;
    &#60;/<span>tr</span>&#62;
    &#60;<span>tr</span><span> class</span>=<span>"odd"</span>&#62;
      &#60;<span>td</span>&#62;1&#60;/<span>td</span>&#62;
    &#60;/<span>tr</span>&#62;
    &#60;<span>tr</span><span> class</span>=<span>"even"</span>&#62;
      &#60;<span>td</span>&#62;2&#60;/<span>td</span>&#62;
    &#60;/<span>tr</span>&#62;
    &#60;<span>tr</span><span> class</span>=<span>"odd"</span>&#62;
      &#60;<span>td</span>&#62;3&#60;/<span>td</span>&#62;
    &#60;/<span>tr</span>&#62;
    &#60;<span>tr</span><span> class</span>=<span>"even"</span>&#62;
      &#60;<span>td</span>&#62;4&#60;/<span>td</span>&#62;
    &#60;/<span>tr</span>&#62;
  &#60;/<span>tbody</span>&#62;
&#60;/<span>table</span>&#62;&#60;<span>div</span><span> class</span>=<span>"listingBar"</span>&#62;
&#60;<span>span</span><span> class</span>=<span>"next"</span>&#62;
&#60;<span>a</span><span> href</span><span>="</span><a href="http://localhost:8090/plone/prova?&#38;table-batchSize:int=5&#38;table-batchStart:int=5">http://localhost:8090/plone/prova?&#38;amp;table-batchSize:int=5&#38;amp;table-batchStart:int=5</a><span>"</span>&#62;Successivi 5 elementi »&#60;/<span>a</span>&#62;
&#60;/<span>span</span>&#62;
[1]
&#60;<span>a</span><span> href</span><span>="</span><a href="http://localhost:8090/plone/prova?&#38;table-batchSize:int=5&#38;table-batchStart:int=5">http://localhost:8090/plone/prova?&#38;amp;table-batchSize:int=5&#38;amp;table-batchStart:int=5</a><span>"</span>&#62;2&#60;/<span>a</span>&#62;
&#60;/<span>div</span>&#62;</pre>
</pre>
<p>Non è poi così noioso lavorare con le tabelle, no? <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[OpenCore Software esta disponible en Español]]></title>
<link>http://lcaballero.wordpress.com/2009/08/23/opencore-software-esta-disponible-en-espanol/</link>
<pubDate>Sun, 23 Aug 2009 16:25:54 +0000</pubDate>
<dc:creator>ljcg</dc:creator>
<guid>http://lcaballero.wordpress.com/2009/08/23/opencore-software-esta-disponible-en-espanol/</guid>
<description><![CDATA[Es grato anunciar que OpenCore Software esta disponible en Español gracias a mi esfuerzo, puede term]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Es grato anunciar que <a title="OpenCore Software" href="http://www.coactivate.org/projects/opencore" target="_blank">OpenCore Software</a> esta disponible en <em><strong>Español</strong></em> gracias a <a title="mi contribución" href="https://projects.openplans.org/opencore/ticket/2835#comment:8" target="_self">mi esfuerzo</a>, puede terminar el trabajo iniciado por <em><a title="Pierre George" href="http://openfsm.net/people/pierre" target="_blank">Pierre George</a></em> (Colaborador de la <a title="plataforma del World Social Forum" href="http://openfsm.net/" target="_blank">plataforma del World Social Forum</a>)  a quien estoy ayudando a actualizar mi contribuciones en esta plataforma con sentido social.</p>
<p>Para los interesados en instalar y probrar la herramientas lo invito a leerse el <a title="manual de instalación" href="http://www.coactivate.org/projects/opencore/getting-started" target="_blank">manual de instalación</a>.</p>
<p>Para los que desconocen<em><strong> &#8220;OpenCore Software&#8221;</strong></em> es el software usado en el sitio <a title="CoActivate.org" href="http://www.coactivate.org/" target="_blank">CoActivate.org</a> anteriormente <a title="OpenPlans.org" href="http://www.openplans.org" target="_blank">OpenPlans.org</a>, y este sitio ofrece <a href="http://www.coactivate.org/about" target="_blank">herramientas que potencia el activismo cívico</a>.</p>
<p>Existen otros sitios que están usando esta plataforma como por ejemplo la <a title="plataforma del World Social Forum" href="http://openfsm.net/" target="_blank">plataforma del World Social Forum</a>.</p>
<p>También le invito a que estén pendientes de los avances de la<a title="Nuestra investigación en CENDITEL" href="http://wiki.cenditel.gob.ve/wiki/srhs/platafoma_srhs" target="_blank"> investigación en fase &#8220;desarrollo&#8221;</a> que estamos realizando en <a title="CENDITEL" href="http://www.cenditel.gob.ve/QuienesSomos" target="_blank">CENDITEL</a> (mi actual trabajo) para censar, evaluar y promover la apropiación de herramientas tecnológicas que permitan flexibilizar la estructuras de gobierno establecidas para interactuar de forma más eficientes ofreciendo medios para la participación cívica en el ejercicio de gobierno, todo  usando exclusivamente Software Libre y Abierto.</p>
<p>Cualquier comentario y sugerencia es bienvenido <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:0;width:1px;height:1px;"><a title="plataforma del World Social Forum" href="http://openfsm.net/" target="_blank">plataforma del World Social Forum</a></div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Monkey ! When patching can't be merged: experimental.aggressiveopaquespeedup]]></title>
<link>http://toutpt.wordpress.com/2009/08/12/monkey-when-patching-can-not-merged-experimental-aggressiveopaquespeedup/</link>
<pubDate>Wed, 12 Aug 2009 16:16:07 +0000</pubDate>
<dc:creator>toutpt</dc:creator>
<guid>http://toutpt.wordpress.com/2009/08/12/monkey-when-patching-can-not-merged-experimental-aggressiveopaquespeedup/</guid>
<description><![CDATA[Next to my first plone patch that improve performance I have profiling the code on a simple query: g]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Next to my first plone patch that improve performance I have profiling the code on a simple query: get a javascript from portal_javascript already computed.</p>
<p>The result is clear: 28% of the time is spent in opaqueitems. So <a href="http://mail.zope.org/pipermail/zope-cmf/2009-August/028559.html">I have discuss about it on CMF mailing list</a>. </p>
<p>A monkey patch was already existing: <a href="http://pypi.python.org/pypi/experimental.opaquespeedup">experimental.opaquespeedup</a>. I have read the code. It replace the time consuming calls on all attributes by a catalog request. But I know that catalog can be slow if the web site has lots of contents. I have decided to make something more aggressive, by just removing opaqueitems that seems to be not used. </p>
<p>So use it at your own risk: <a href="http://pypi.python.org/pypi/experimental.aggressiveopaquespeedup">experimental.aggressiveopaquespeedup</a></p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
