<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0">

    <channel>

        <title>redturtle</title>
        <link>http://blog.redturtle.it</link>
        <description></description>

        <generator>basesyndication</generator>
        <!-- TODO
        <lastBuildDate>Mon, 30 Sep 2002 11:00:00 GMT</lastBuildDate>
        <copyright>Copyright 1997-2002 Dave Winer</copyright>
        <docs>http://backend.userland.com/rss</docs>
        <category domain="Syndic8">1765</category>
        <managingEditor>dave@userland.com</managingEditor>
        <webMaster>dave@userland.com</webMaster>
        -->

        <!-- TODO: Should there be an individual image associatable with each
        Weblog object?  I think so... -->
        <image>
            <title>redturtle</title>
            <url>http://blog.redturtle.it/logo.png</url>
            <link>http://blog.redturtle.it</link>
        </image>

        
            <item>
                <title>3 prodotti per gestire le prenotazioni con Plone</title>
                <guid>http://blog.redturtle.it/2013/05/17/prodotti-gestire-prenotazioni-plone</guid>
                <link>http://blog.redturtle.it/2013/05/17/prodotti-gestire-prenotazioni-plone</link>
                <description>&lt;p&gt;In questo articolo farò una breve analisi di questi tre prodotti:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href="https://pypi.python.org/pypi/Products.PloneBooking/3.0.0a2"&gt;Products.PloneBooking&lt;/a&gt;&lt;/li&gt;
&lt;li dir="ltr"&gt;&lt;a href="https://pypi.python.org/pypi/rg.prenotazioni/"&gt;rg.prenotazioni&lt;/a&gt;&lt;/li&gt;
&lt;li dir="ltr"&gt;&lt;a href="https://pypi.python.org/pypi/seantis.reservation/1.0.1"&gt;seantis.reservation&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;presentati in rigoroso ordine di apparizione su &lt;a href="http://pypi.python.org"&gt;pypi&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;Per tutti, il caso d’uso è il seguente:&lt;/div&gt;
&lt;ol&gt;
&lt;li dir="ltr"&gt;il redattore pubblica agende di &lt;strong&gt;risorse&lt;/strong&gt; (ad es. prestazioni, servizi, sale...) con relative disponibilità&lt;/li&gt;
&lt;li dir="ltr"&gt;gli utenti richiedono la &lt;strong&gt;prenotazione&lt;/strong&gt; della risorsa per un intervallo temporale&lt;/li&gt;
&lt;li dir="ltr"&gt;i gestori della risorsa &lt;strong&gt;trattano&lt;/strong&gt; la richiesta di prenotazione.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ma ora bando alle ciance e vediamo di conoscerli meglio.&lt;/p&gt;
&lt;h3 dir="ltr"&gt;Products.PloneBooking&lt;/h3&gt;
&lt;p dir="ltr"&gt;&lt;img class="image-right" src="http://blog.redturtle.it/uploads/plonebooking.png/@@images/e87bd897-c0ff-4f86-b330-cd1a2d557769.png" /&gt;Il &lt;i&gt;"decano"&lt;/i&gt; dei prodotti per le prenotazioni è senza dubbio &lt;a href="https://pypi.python.org/pypi/Products.PloneBooking/3.0.0a2"&gt;Products.PloneBooking&lt;/a&gt;. Nato per Plone 2, è ancora &lt;strong&gt;IL&lt;/strong&gt; prodotto per le prenotazioni in Plone.&lt;/p&gt;
&lt;p dir="ltr"&gt;Lo sviluppo pare procedere lentamente: l’ultima release (3.0.0a2) è di &lt;strong&gt;un anno fa&lt;/strong&gt;&lt;strong&gt;, &lt;/strong&gt;&lt;strong&gt;ma f&lt;/strong&gt;ortunatamente su &lt;a href="https://github.com/collective/Products.PloneBooking"&gt;github&lt;/a&gt; si può trovare codice un po’ più aggiornato. Proprio questo codice è stato utilizzato per le prove di questo post.&lt;/p&gt;
&lt;p dir="ltr"&gt;Nonostante abbia utilizzato del codice di sviluppo di una versione alfa, non ho riscontrato &lt;strong&gt;nessun intoppo&lt;/strong&gt; significativo nell’utilizzo del prodotto: per prenotare, prenota - e lo fa anche bene!&lt;/p&gt;
&lt;p dir="ltr"&gt;Il comportamento con javascript disabilitato &lt;strong&gt;non è impeccabile&lt;/strong&gt;, ma nessuna delle funzionalità chiave è compromessa.&lt;/p&gt;
&lt;h3 dir="ltr"&gt;rg.prenotazioni&lt;/h3&gt;
&lt;p dir="ltr"&gt;&lt;img alt="prenotazionifolderedit.png" class="image-right" src="http://blog.redturtle.it/pypi-images/rg.prenotazioni/prenotazionifolderedit.png/@@images/9d32857b-eb48-4123-9591-fa7dcd2390d9.png" title="prenotazionifolderedit.png" /&gt;Questo prodotto è stato sviluppato nell’ambito dell’iniziativa &lt;a href="http://www.plonegov.it/"&gt;PloneGov&lt;/a&gt;, inizialmente per Plone 3. Ultimamente, grazie a &lt;a class="external-link" href="http://blog.redturtle.it/redturtle/authors/andreacecchi"&gt;cekk&lt;/a&gt; e &lt;a class="external-link" href="http://blog.redturtle.it/redturtle/authors/luca"&gt;keul&lt;/a&gt;, è stato considerevolmente migliorato. Le nostre tartarughe l’hanno reso compatibile con Plone 4, non senza dimenticarsi di apportare notevoli migliorie al codice.&lt;/p&gt;
&lt;p dir="ltr"&gt;Il &lt;strong&gt;punto di forza&lt;/strong&gt; di questo prodotto risiede nella possibilità di allocare a priori e con &lt;strong&gt;grande flessibilità intervalli di tempo&lt;/strong&gt; per le prenotazioni e di specificare che, in determinate giornate, non verranno accettate prenotazioni (ad esempio durante le &lt;strong&gt;festività&lt;/strong&gt;).&lt;/p&gt;
&lt;p dir="ltr"&gt;Il prodotto è completamente usabile pur disabilitando i javascript.&lt;/p&gt;
&lt;p dir="ltr"&gt;Il prodotto non è sicuramente maturo quanto PloneBooking e difetta della possibilità di avere una &lt;strong&gt;reportistica&lt;/strong&gt; sulle prenotazioni, ma tale funzionalità è in via di sviluppo.&lt;/p&gt;
&lt;h3&gt;seantis.reservation&lt;/h3&gt;
&lt;p dir="ltr"&gt;&lt;img class="image-right" src="http://blog.redturtle.it/uploads/milliwayscalendar.png/@@images/6fc3350d-7fa6-429c-a5c1-f6a7f09fcab2.png" /&gt;Questo prodotto è l’ultimo arrivato su pypi, e si vede! Non certo perché mostra difetti di gioventù (anzi, è proprio ben fatto) ma perché è il prodotto &lt;strong&gt;tecnologicamente più avanzato&lt;/strong&gt;, sia per quanto riguarda l’interfaccia utente, davvero &lt;strong&gt;moderna&lt;/strong&gt;, &lt;strong&gt;comoda&lt;/strong&gt; e &lt;strong&gt;intuitiva&lt;/strong&gt;, che per quanto riguarda la parte applicativa.&lt;/p&gt;
&lt;p dir="ltr"&gt;Proprio per questo il prodotto risulta installabile solo su siti &lt;strong&gt;Plone recenti&lt;/strong&gt; (minimo 4.3), necessità di un server &lt;strong&gt;postgres&lt;/strong&gt; di appoggio (minimo 9.1) e, per il suo utilizzo, &lt;strong&gt;richiede javascript&lt;/strong&gt;.&lt;/p&gt;
&lt;p dir="ltr"&gt;Per quanto concerne le funzionalità, caratteristica &lt;strong&gt;distintiva&lt;/strong&gt; di questo prodotto è la possibilità di poterlo configurare per permettere &lt;strong&gt;prenotazioni multiple&lt;/strong&gt; nello stesso intervallo temporale.&lt;/p&gt;
&lt;h3 dir="ltr"&gt;E quindi?&lt;/h3&gt;
&lt;p dir="ltr"&gt;Cosa dobbiamo usare? La risposta a questa domanda dipende molto dalle vostre effettive esigenze.&lt;/p&gt;
&lt;p dir="ltr"&gt;&lt;strong&gt;PloneBooking&lt;/strong&gt; è consigliato se volete affidarvi a un prodotto maturo con una base di utenti consolidata; &lt;strong&gt;rg.prenotazioni&lt;/strong&gt; è in fase di fervente sviluppo quindi aspettatevi a breve novità, correzioni e migliorie; &lt;strong&gt;seantis.reservation&lt;/strong&gt; è quello che tecnologicamente cresce di una spanna su tutti, con vantaggi e svantaggi del caso.&lt;/p&gt;</description>
                <author>Alessandro Pisa</author>

                
                    <category>riuso</category>
                
                
                    <category>Plone 4</category>
                
                
                    <category>plone.it</category>
                
                
                    <category>plonegov</category>
                
                
                    <category>Plone</category>
                

                <pubDate>Fri, 17 May 2013 14:30:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>Web apps: debug remoto con Android e Chrome Developer Tools</title>
                <guid>http://blog.redturtle.it/2013/05/14/web-apps-debug-remoto-android-chrome-devtools</guid>
                <link>http://blog.redturtle.it/2013/05/14/web-apps-debug-remoto-android-chrome-devtools</link>
                <description>&lt;p&gt;Attualmente la maggior parte dei browser web disponibili per &lt;strong&gt;desktop &lt;/strong&gt;&lt;strong&gt;-&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;come per esempio &lt;i&gt;Chrome&lt;/i&gt;, &lt;i&gt;Internet Explorer&lt;/i&gt;, &lt;i&gt;Opera&lt;/i&gt;...&lt;i&gt; -&lt;/i&gt; dispone nativamente, o quanto meno permette l'installazione, di strumenti divenuti ormai indispensabili per lo sviluppo web, dei quali sarebbe impensabile fare a meno.&lt;/p&gt;
&lt;p style="text-align: center; "&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/browsericons.png/@@images/620b1e8e-9035-4d5b-86f3-82221f9c70fb.png" /&gt;&lt;/p&gt;
&lt;p&gt;Stiamo parlando infatti di tool molto potenti e raffinati, veri e propri "&lt;i&gt;attrezzi del mestiere&lt;/i&gt;" di web developer e designer. &lt;br /&gt;&lt;a class="external-link" href="http://getfirebug.com/"&gt;Firebug&lt;/a&gt;, &lt;a class="external-link" href="https://developers.google.com/chrome-developer-tools/"&gt;Chrome Developer Tools&lt;/a&gt;, &lt;a class="external-link" href="http://www.opera.com/dragonfly/"&gt;Opera Dragonfly&lt;/a&gt; sono sicuramente tra i più diffusi e conosciuti, e offrono sofisticate funzionalità tra cui:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;debugger&lt;/li&gt;
&lt;li&gt;console JavaScript&lt;/li&gt;
&lt;li&gt;ispezione degli elementi DOM&lt;/li&gt;
&lt;li&gt;analisi dei log.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style="text-align: left; "&gt;Problema&lt;/h2&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;In ambiente &lt;i&gt;mobile&lt;/i&gt;, nello sviluppo di applicazioni &lt;strong&gt;HTML5 &lt;/strong&gt;(web app) le cose non sono diverse,&lt;img class="image-right" src="http://blog.redturtle.it/uploads/lookbehindyou.png" /&gt; nel senso che le esigenze sono le stesse dello sviluppo web tradizionale; a cambiare, però, sono gli strumenti disposizione.&lt;/div&gt;
&lt;p&gt;I browser per &lt;i&gt;mobile&lt;/i&gt; non hanno infatti le caratteristiche dei fratelli maggiori, lasciando così sviluppatori e designer sprovvisti di un vero e proprio "banco di lavoro" per le loro applicazioni.&lt;/p&gt;
&lt;h2&gt;Soluzione&lt;/h2&gt;
&lt;p&gt;Fortunatamente a venirci in soccorso sono proprio gli stessi ambienti di sviluppo desktop.mobile.&lt;br /&gt; Negli ultimi anni infatti, alcuni di questi si sono evoluti aggiungendo funzionalità di &lt;i&gt;remote debugging, &lt;/i&gt;come ha fatto per esempio Google per &lt;i&gt;Chrome Developer Tools&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Il debug remoto permette di connettersi con il browser in utilizzo sul computer direttamente alla sessione attiva sul browser del dispositivo &lt;i&gt;mobile&lt;/i&gt; e rende possibile interagire con essa in tempo reale.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Niente male, direi&lt;/strong&gt;! Vediamo come si configura.&lt;/p&gt;
&lt;h2 style="text-align: left; "&gt;Installazione&lt;/h2&gt;
&lt;p&gt;Nativamente disponibile nella versione desktop di Chrome (F12 da tastiera), &lt;i&gt;Chrome Developer Tools&lt;/i&gt; necessita di qualche componente aggiuntivo per l'utilizzo remoto.&lt;/p&gt;
&lt;h3&gt;Requisiti&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;un dispositivo &lt;i&gt;mobile&lt;/i&gt; Android&lt;/li&gt;
&lt;li&gt;l'ambiente di sviluppo Android (SDK)&lt;/li&gt;
&lt;li&gt;&lt;i&gt;Chrome for mobile&lt;/i&gt; installato sul dispositivo&lt;/li&gt;
&lt;li&gt;un cavo USB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;L'installazione dell'&lt;strong&gt;Android SDK&lt;/strong&gt; non presenta grosse difficoltà in quanto Goolge fornisce direttamente l'installer per iOS, Linux e Windows. Una volta scaricato, vi basta seguire le indicazioni di configurazione fornite a schermo. Per maggiori informazioni trovate tutto &lt;a class="external-link" href="http://developer.android.com/sdk/index.html"&gt;qui&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Android SDK&lt;/strong&gt; viene tipicamente usato per lo sviluppo di applicazioni native, ma è necessario anche nello sviluppo di &lt;strong&gt;applicazioni web &lt;i&gt;mobile&lt;/i&gt;&lt;/strong&gt;: infatti mette a disposizione &lt;strong&gt;adb &lt;/strong&gt;(Android Debug Bridge) che permette la comunicazione tra il browser &lt;i&gt;mobile&lt;/i&gt; attivo sul dispositivo e &lt;i&gt;Chrome Developer Tools&lt;/i&gt; su desktop.&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Chrome for mobile&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;i&gt;Chrome for mobile&lt;/i&gt; è il browser di Google per &lt;i&gt;mobile&lt;/i&gt; scaricabile &lt;strong&gt;free&lt;/strong&gt; direttamente da&lt;a class="external-link" href="https://play.google.com/store?hl=en"&gt; Google Play&lt;/a&gt;. Attenzione ai requisiti minimi di installazione su &lt;i&gt;Android&lt;/i&gt;: richiede infatti una versione 4 o superiore.&lt;/p&gt;
&lt;h2 style="text-align: left; "&gt;Configurazione&lt;/h2&gt;
&lt;p&gt;Finita la fase di installazione si può procedere con la configurazione, che in linea di massima dovrebbe essere molto veloce; bastano due flag selezionati nei punti giusti.&lt;/p&gt;
&lt;p&gt;Ecco cosa fare: connettere il telefono al computer attraverso il cavo USB e, nell'ordine, abilitare il &lt;strong&gt;debugger usb &lt;/strong&gt;in &lt;i&gt;Android&lt;/i&gt; e il &lt;strong&gt;debugger web &lt;i&gt;mobile&lt;/i&gt;&lt;/strong&gt; in &lt;i&gt;Chrome for mobile &lt;/i&gt;come mostrato di seguito:&lt;/p&gt;
&lt;p style="text-align: center; "&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/copy2_of_usb.png" style="text-align: center; " /&gt; &lt;img class="image-inline" src="http://blog.redturtle.it/uploads/copy_of_web.png" /&gt;&lt;/p&gt;
&lt;p&gt;Lanciare ora il comando &lt;strong&gt;adb&lt;/strong&gt; direttamente da console per attivare la sincronizzazione tra desktop e dispositivo &lt;i&gt;mobile&lt;/i&gt;:&lt;/p&gt;
&lt;pre&gt;adb forward tcp:9222 localabstract:chrome_devtools_remote&lt;/pre&gt;
&lt;p&gt;Fatto!&lt;/p&gt;
&lt;h2&gt;Utilizzo&lt;/h2&gt;
&lt;p&gt;Arrivati a questo punto abbiamo tutto il necessario per iniziare una nuova sessione di sviluppo. Digitare quindi nella barra degli indirizzi di Chrome l'indirizzo &lt;i&gt;localhost:9222&lt;/i&gt;&lt;/p&gt;
&lt;p style="text-align: center; "&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/copy_of_image_7.png" /&gt;&lt;/p&gt;
&lt;p&gt;Se tutto è andato a buon fine, quando si inizia la navigazione da cellulare dovrebbero comparire le pagine navigate in &lt;i&gt;Google Chrome, &lt;/i&gt;come mostrato nell'esempio sopra, dove si vedono tre pagine da me aperte in quel momento. Ora potete scegliete quale ispezionare semplicemente cliccandoci sopra. Il sorgente sarà immediatamente disponibile in &lt;i&gt;Chrome Developer Tools&lt;/i&gt; sul vostro computer, esattamente come fareste con le applicazioni per desktop:&lt;/p&gt;
&lt;p style="text-align: center; "&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/inspection.png" /&gt;&lt;/p&gt;
&lt;h2 style="text-align: left; "&gt;Conclusioni&lt;/h2&gt;
&lt;p&gt;Nel difficile compito di ricerca delle performance, disporre di strumenti adeguati è molto importante specialmente per il &lt;i&gt;mobile&lt;/i&gt; dove le risorse a disposizione sono (ancora) ridotte.&lt;br /&gt;&lt;i&gt;Chrome Deveveloper tools&lt;/i&gt; è uno di questi; di certo non può garantire che le vostre applicazioni siano di successo, ma è di grande aiuto affinché possano diventarlo.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div id="_mcePaste"&gt;&lt;/div&gt;
&lt;/div&gt;</description>
                <author>Nicola Senno</author>

                
                    <category>web</category>
                
                
                    <category>Chrome</category>
                
                
                    <category>HTML5</category>
                
                
                    <category>Android</category>
                
                
                    <category>Remote debug</category>
                

                <pubDate>Tue, 14 May 2013 09:40:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>Come gestire l'iscrizione alle notifiche di un sito con le rule di Plone</title>
                <guid>http://blog.redturtle.it/2013/05/09/come-gestire-l-iscrizione-alle-notifiche-di-un-sito-con-le-rule-di-plone</guid>
                <link>http://blog.redturtle.it/2013/05/09/come-gestire-l-iscrizione-alle-notifiche-di-un-sito-con-le-rule-di-plone</link>
                <description>&lt;p&gt;Lo ammetto, quando si avvicina il momento di scrivere un nuovo post del blog mi sembra sempre di non avere argomenti interessanti o di approfondire argomenti già raccontati (vedi i miei &lt;a href="http://blog.redturtle.it/content-type-products-contentmigration" class="internal-link"&gt;innumerevoli&lt;/a&gt; &lt;a href="http://blog.redturtle.it/migrazione-plone-4-tips-and-tricks" class="internal-link"&gt;post&lt;/a&gt; sulle &lt;a href="http://blog.redturtle.it/rt.atmigrator-pensioniamo-vecchi-tipi-con-un-click" class="internal-link"&gt;migrazioni&lt;/a&gt;, per esempio).&lt;/p&gt;
&lt;p&gt;Poi, però, capita che un paio di giorni prima della scadenza (argomento già trattato da Ale in un &lt;a href="http://blog.redturtle.it/mi-piacciono-le-bagigie" class="internal-link"&gt;post precedente&lt;/a&gt;) arrivi una richiesta di un cliente che mi accende la lampadina e mi da il &lt;strong&gt;LA&lt;/strong&gt; per scrivere il mio prossimo articolo.&lt;/p&gt;
&lt;p&gt;Il caso di studio che vi racconto è partito da una semplice richiesta:&lt;/p&gt;
&lt;p class="callout"&gt;Sarebbe possibile permettere agli utenti del sito di rimanere sempre aggiornati con i nuovi contenuti del sito?&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;Usiamo le contenrules! Un gioco da ragazzi!&lt;/blockquote&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;Il mio primo pensiero è andato subito alle &lt;strong&gt;regole&lt;/strong&gt;: una funzionalità nativa di Plone che permette di definire una (o più di una) certa azione da fare al verificarsi di un (o più di uno) determinato evento. Per esempio, in questo caso mi sarebbe bastato creare una regola che si attivava alla creazione di determinati contenuti, e come azione inizialmente pensavo di spedire una mail agli utenti utilizzando &lt;a class="external-link" href="https://pypi.python.org/pypi/collective.contentrules.mailtogroup"&gt;collective.contentrules.mailtogroup&lt;/a&gt; per gestire la lista di indirizzi. Non c'era da sviluppare nulla di nuovo e in due minuti impostavo il tutto. Più facile di così, si muore.&lt;/div&gt;
&lt;p&gt;&lt;img src="http://blog.redturtle.it/topic_images/data.jpg/@@images/dfaa0819-f5fb-4bd7-812f-a87c3f1fc3a8.jpeg" alt="" class="image-right" title="" /&gt;&lt;/p&gt;
&lt;p&gt;Ma la domanda nascondeva qualche trabocchetto (o come direbbe Data, un tracobbetto): infatti gli "&lt;i&gt;utenti&lt;/i&gt;" potevano anche essere utenti &lt;i&gt;anonimi&lt;/i&gt;, e gli utenti stessi dovevano potersi iscrivere liberamente alle notifiche, senza passare per un gestore intermedio (ingenuamente mi ero illuso di poter creare un form di richiesta con &lt;a class="external-link" href="https://pypi.python.org/pypi/Products.PloneFormGen"&gt;Products.PloneFormGen&lt;/a&gt; in modo che poi i gestori potessero raccogliere le iscrizioni e gestire le liste di notifiche direttamente nella regola).&lt;/p&gt;
&lt;p&gt;A questo punto, dopo alcune ricerche, era chiaro che nessuno dei prodotti disponibili faceva al caso mio.&lt;br /&gt;Dovevo quindi studiare un modo per soddisfare questa richiesta e donare alla comunità un nuova utile funzionalità. Per questo è nato &lt;strong&gt;collective.contentrules.subscription&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;E' un prodotto molto semplice che ha due componenti principali: una nuova azione per le regole e un tool che memorizza le varie sottoscrizioni.&lt;/p&gt;
&lt;p&gt;Nell'azione da associare alle regole si possono inserire il soggetto e il testo della mail che verrà poi spedita, e quando viene scatenata questa azione, la lista di email a cui spedire la notifica è presa interrogando il tool e recuperando la lista di indirizzi a lei associata.&lt;/p&gt;
&lt;p&gt;Lato utente, è presente una vista che mostra tutte le possibili regole disponibili (ovviamente solo quelle che hanno la nostra nuova azione impostata), da cui può scegliere a quali iscriversi. E' previsto anche un controllo di prevenzione per lo spam sfruttando &lt;a class="external-link" href="https://pypi.python.org/pypi/collective.z3cform.norobots"&gt;collective.z3cform.norobots&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.redturtle.it/topic_images/iscrizione_rules.png" alt="Iscrizione notifiche" class="image-inline" title="Iscrizione notifiche" /&gt;&lt;/p&gt;
&lt;p&gt;Esiste poi anche un pannello di controllo per i gestori del sito, che permette di avere una panoramica sullo stato delle iscrizioni ed eventualmente intervenire per rimuoverne.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.redturtle.it/topic_images/controlpanel_rules.png/@@images/be49399f-16c3-43fd-9e15-7a55c802dbe1.png" alt="Controlpanel rules" class="image-inline" title="Controlpanel rules" /&gt;&lt;/p&gt;
&lt;p&gt;Il tutto ovviamente è versionato e disponibile su &lt;a class="external-link" href="https://github.com/RedTurtle/collective.contentrules.subscription"&gt;github&lt;/a&gt;, quindi se vi piace l'idea e volete contribuire a migliorarlo, siete i benvenuti :)&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Questa è una versione di partenza e mancano diverse funzionalità utili che potrebbero essere introdotte nelle prossime versioni, come per esempio la possibilità da parte degli utenti di visualizzare le proprie iscrizioni ed eventualmente cancellarsi, e anche un maggior livello di sicurezza nella gestione delle sottoscrizioni (ad esempio con un passaggio di validazione e conferma dell'indirizzo inserito).&lt;/p&gt;</description>
                <author>Andrea Cecchi</author>

                
                    <category>python</category>
                
                
                    <category>mail</category>
                
                
                    <category>products</category>
                
                
                    <category>release</category>
                

                <pubDate>Thu, 09 May 2013 14:00:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>Analisi (e modifica) di come Plone genera link ai File - seconda parte</title>
                <guid>http://blog.redturtle.it/2013/05/07/analisi-modifica-come-plone-genera-link-file-pt2</guid>
                <link>http://blog.redturtle.it/2013/05/07/analisi-modifica-come-plone-genera-link-file-pt2</link>
                <description>&lt;p&gt;Nella &lt;a class="external-link" href="http://blog.redturtle.it/2013/05/03/analisi-modifica-come-plone-genera-link-file-pt1"&gt;prima parte dell'articolo&lt;/a&gt; abbiamo risolto solo una parte del problema per rendere gli URL di Plone più "parlanti".&lt;/p&gt;
&lt;p&gt;Vediamo ora come affrontare i problemi restanti.&lt;/p&gt;
&lt;h2&gt;Fase 2: come trattare il pregresso&lt;/h2&gt;
&lt;p&gt;Infatti è solo ora che le cose si fanno interessanti...&lt;/p&gt;
&lt;p&gt;Ci siamo trovati di fronte a un grosso problema: come "bonificare" la situazione creatasi negli anni precedenti alle modifiche sopra descritte?&lt;/p&gt;
&lt;p&gt;Sarebbe stato possibile scrivere una procedura automatica che sistemasse automaticamente tutti i link generati tramite TinyMCE dalla forma canonica alla forma di download modificata?&lt;br /&gt;La risposta per noi è stata "forse... ma meglio di no". Si parlava di centinaia (migliaia) di link, per decine di siti Plone.&lt;/p&gt;
&lt;p&gt;L'eventualità di eseguire qualcosa senza un intervento umano era a dir poco terrificante, col rischio di trovare contenuti rovinati dall'operazione dopo mesi.&lt;br /&gt;Molto meglio aiutare l'utente a sistemare il problema, cercando per lui i potenziali link da sistemare ma chiedendo conferma dell'operazione: un lavoro di certo più lungo ma che dà la sicurezza del risultato.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;&lt;/div&gt;
&lt;p&gt;Il primo passo è stato quindi quello di riprendere uno spike, un prodotto mai rilasciato che si occupava di ricerca all'interno del testo Plone usando espressioni regolari, e renderlo qualcosa di utilizzabile da interfaccia Plone: &lt;a class="external-link" href="https://plone.org/products/rt.bulkmodify"&gt;rt.bulkmodify&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il prodotto presenta un'interfaccia Plone che permette di &lt;strong&gt;cercare testo all'interno dei contenuti del sito&lt;/strong&gt;. Quando il testo viene trovato, una tabella viene popolata con i risultati.&lt;/p&gt;
&lt;p&gt;Visto che questo tipo di operazione richiede il risveglio dei contenuti Plone, il tempo richiesto per completarsi su un sito molto popolato potrebbe essere tanto lungo da mandare in timeout la richiesta, quindi la scelta presa è stata quella di fornire un'&lt;strong&gt;interfaccia JavaScript reattiva, completamente basata su chiamate AJAX&lt;/strong&gt;.&lt;br /&gt;Se tutta l'operazione dovesse durare anche 20 minuti, questa viene spezzata in tante piccole chiamate che terminano velocemente.&lt;/p&gt;
&lt;p&gt;Oltre alla ricerca è poi possibile eseguire la &lt;strong&gt;sostituzione del testo trovato&lt;/strong&gt;, sempre sfruttando le espressioni regolari.&lt;/p&gt;
&lt;p&gt;
&lt;object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0" height="700" width="100%"&gt;
&lt;param name="src" value="uploads/rt.bulkmodify-demo.swf"&gt;&lt;embed height="700" width="100%" src="uploads/rt.bulkmodify-demo.swf" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;C'è un problema: una semplice espressione regolare con sostituzione testuale non può sistemare il problema perché non c'è modo di sapere, senza un'analisi del contenuto Plone, il nome reale del file caricato.&lt;/p&gt;
&lt;p&gt;Il prodotto doveva quindi essere &lt;strong&gt;estendibile&lt;/strong&gt;, permettendo di lanciare speciali operazioni lato server di sostituzione del testo, per individuare i link interni ai file e trasformarli nella forma voluta. Tutto questo è stato di nuovo inserito nel prodotto specifico del Cliente ma senza tradire l'idea iniziale: sarà una persona in carne e ossa che supervisionerà e deciderà cosa sostituire e cosa no.&lt;/p&gt;
&lt;h2&gt;Link a file... esterni!&lt;/h2&gt;
&lt;p&gt;L'ultimo pezzo del puzzle riguarda i link tra siti diversi.&lt;br /&gt;Il Cliente ha un grande numero di siti Plone che, per fortuna, condividono il 90% dei prodotti installati.&lt;/p&gt;
&lt;p&gt;La necessità di sistemare le statistiche era quindi valida anche per link ad altri siti del Cliente.&lt;br /&gt;Se quindi un sito nel dominio "http://sub1.vostro-host.com/" conteneva un link a un file in un altro sito "http://sub2.vostro-host.com/", questo link al file avrebbe dovuto rispettare la regola di essere comprensibile al software di raccolta statistiche.&lt;/p&gt;
&lt;p&gt;Nel caso di nuovi link, tutto ciò diventa lavoro del redattore: è lui che deve fornire il link corretto per il download (copiandolo dalla vista di downalod del file, che ora monta rer.downloadurl)...&lt;/p&gt;
&lt;p&gt;...ma ancora una volta: come sistemare il pregresso??&lt;/p&gt;
&lt;p&gt;La soluzione è stata quella di scrivere un nuovo plugin che sfruttasse le caratteristiche di Plone scoperte per capire se i link, anche quando esterni, fossero link a file Plone.&lt;/p&gt;
&lt;p&gt;Per fare questo occorre:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cercare gli URL nel testo&lt;/li&gt;
&lt;li&gt;per ogni URL, tentare di scaricare lo stesso aggiungendovi in fondo "/at_download/file" (se ok: probabilmente è Plone!)&lt;/li&gt;
&lt;li&gt;se si ottiene una risposta con un header che identifica il nome reale del file, salvare questo nome&lt;/li&gt;
&lt;li&gt;generare l'URL aggiungendovi "/at_download/file" e il nome del file.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Il Cliente era interessato a sistemare solo i propri link interni (intesi come: link ad altri siti dell'organizzione) e quindi l'espressione regolare di ricerca è stata limitata agli URL contenenti il nome host corretto, anche perché aprire connessioni a URL esterni a un sito può (ulteriormente) rallentare la procedura.&lt;/p&gt;
&lt;h2&gt;Conclusione&lt;/h2&gt;
&lt;p&gt;La Storia ha avuto un lieto fine, anche grazie a una serie di prodotti con compiti ben separati.&lt;/p&gt;
&lt;p&gt;Ma probabilmente varrebbe la pena sistemare tutto questo direttamente alla fonte: tra i tanti pregi di Plone c'è sempre stato quello di avere gli "URL parlanti", quindi credo valga la pena rendere gli URL ai file già &lt;strong&gt;leggibili dagli HTTP log&lt;/strong&gt;.&lt;/p&gt;
&lt;p class="callout"&gt;Non ha senso (e confonde) avere più modi per accedere alla stessa informazioni in modi "simili".&lt;/p&gt;
&lt;p&gt;Che ne dite?&lt;/p&gt;
&lt;p&gt;&lt;span class="discreet"&gt;L'immagine in testata è di &lt;a class="external-link" href="http://www.flickr.com/photos/8741037@N08/"&gt;mothemagicdragon&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;</description>
                <author>Luca Fabbri</author>

                
                    <category>tutorials</category>
                
                
                    <category>products</category>
                
                
                    <category>Plone</category>
                
                
                    <category>plone.it</category>
                

                <pubDate>Tue, 07 May 2013 11:00:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>Analisi (e modifica) di come Plone genera link ai File: una storia vera (parte 1)</title>
                <guid>http://blog.redturtle.it/2013/05/03/analisi-modifica-come-plone-genera-link-file-pt1</guid>
                <link>http://blog.redturtle.it/2013/05/03/analisi-modifica-come-plone-genera-link-file-pt1</link>
                <description>&lt;h2&gt;C'era una volta il File in Plone&lt;/h2&gt;
&lt;p&gt;Questa Storia parte da un Cliente non molto contento del modo in cui Plone gestisce i file.&lt;br /&gt;Nel caso non lo sappiate, c'è una certa confusione a riguardo.&lt;/p&gt;
&lt;p&gt;Se nel vostro sito Plone vi collegate all'indirizzo diretto a un file, nella forma...&lt;/p&gt;
&lt;p style="padding-left: 30px; "&gt;http://vostro-host.com/percorso/al/file.pdf&lt;/p&gt;
&lt;p&gt;...il file in questione viene "aperto direttamente": gli header inviati da Plone scatenano l'apertura del file "&lt;i&gt;inline&lt;/i&gt;", quindi sfruttando eventuali plugin del browser, se presenti.&lt;br /&gt;Questo tipo di comportamento ha&lt;strong&gt; problemi di usabilità&lt;/strong&gt;: utenti che non capiscono di essere ancora "&lt;i&gt;dentro al browser&lt;/i&gt;" potrebbero chiudere il browser pensando che si tratti di un programma esterno. Se l'utente poi vuole scaricare il file dal plugin, deve trovarne la funzione all'interno dello stesso.&lt;/p&gt;
&lt;p&gt;Eppure se arrivate allo stesso file dall'interfaccia Plone (dal navigatore del sito, da una delle viste, ...) vi troverete a un URL diverso:&lt;/p&gt;
&lt;p style="padding-left: 30px; "&gt;http://vostro-host.com/percorso/al/file.pdf/view&lt;/p&gt;
&lt;p&gt;Questo è l'indirizzo della vista del contenuto file (&lt;strong&gt;file_view&lt;/strong&gt;) da cui potete vedere alcune informazioni sul file e da dove viene mostrato il link per scaricarlo, che assume invece questa forma:&lt;/p&gt;
&lt;p style="padding-left: 30px; "&gt;http://vostro-host.com/percorso/al/file.pdf/at_download/file&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;NB&lt;/strong&gt;: per alcuni, passare prima dalla vista del contenuto file è solo una perdita di tempo... e un click inutile. Per altri, se il navigatore facesse scaricare direttamente il file (funzionalità semplice da ottenere con Plone), sarebbe inconcepibile: capirete quindi che non esiste una soluzione universale.&lt;/p&gt;
&lt;h2&gt;La Storia si complica&lt;/h2&gt;
&lt;p&gt;Il &lt;strong&gt;contenuto File&lt;/strong&gt; in Plone è uno di quei pochi tipi dove il &lt;strong&gt;campo titolo non è obbligatorio&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Partendo da Plone 4 (con l'inclusione di &lt;i&gt;plone.app.blob&lt;/i&gt; nel core Plone) è stata introdotta un'altra grossa differenza: prima di Plone 4, caricare un file con e senza titolo non aveva differenze sull'URL generato: l'id del file (che determinava anche l'URL) era sempre lo stesso: il nome del file caricato.&lt;br /&gt;Con Plone 4 il campo titolo è rimasto opzionale ma, se venisse fornito, questo verrà utilizzato per generare l'id del contenuto (come per tutti gli altri tipo Plone).&lt;br /&gt;Se dovessimo quindi caricare lo stesso "&lt;i&gt;file.pdf&lt;/i&gt;" con il titolo "&lt;i&gt;Il mio file PDF&lt;/i&gt;", otterremmo in realtà questo URL:&lt;/p&gt;
&lt;p style="padding-left: 30px; "&gt;http://vostro-host.com/percorso/al/il-mio-file-pdf&lt;/p&gt;
&lt;h2&gt;TinyMCE (la Storia diventa un gran caos)&lt;/h2&gt;
&lt;p&gt;Avete mai fatto caso &lt;strong&gt;al modo in cui TinyMCE genera link ai file&lt;/strong&gt;? Li tratta in modo diverso dagli altri contenuti?&lt;br /&gt;No!&lt;/p&gt;
&lt;p&gt;Usando il comodo plugin per i link interni, TinyMCE genera un semplice &lt;i&gt;link diretto al file&lt;/i&gt;, che per quanto visto sopra è il link che determina l'apertura del file &lt;i&gt;inline&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;Vediamo di ricapitolare; la situazione è la seguente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dai navigatori Plone arrivo alla vista dei file ("/view")&lt;/li&gt;
&lt;li&gt;da questa vista ho disponibile il link per scaricare il file ("/at_download/file")&lt;/li&gt;
&lt;li&gt;usando link generati dall'editor ottengo l'apertura diretta del file &lt;i&gt;inline&lt;/i&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;...ed infine le statistiche&lt;/h2&gt;
&lt;p&gt;Il colpo di grazia ci viene dato dai &lt;strong&gt;sistemi di statistiche che analizzano i log&lt;/strong&gt;. Esistono infatti software che, analizzando i log degli accessi HTTP, sono in grado di individuare se la risorsa scaricata è un file, e di quale tipo.&lt;/p&gt;
&lt;p&gt;Il problema di questo approccio è che nel log HTTP non ci sono molte informazioni se non l'URL (questo è un limite universale dell'approccio... Plone e altri CMS non potrebbero fare nulla per evitarlo); per capire quindi se un dato URL si riferisce ad un file PDF, l'unico modo è sperare che l'URL stesso finisca con "&lt;i&gt;.pdf&lt;/i&gt;". Nessun header può fare la differenza qui...&lt;/p&gt;
&lt;p&gt;Se torniamo ai file di Plone, avrete notato come da quasi nessuno di questi si capisca che si sta per accedere ad un file PDF:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;http://vostro-host.com/percorso/al/il-mio-file-pdf&lt;br /&gt;non finisce con ".pdf"&lt;/li&gt;
&lt;li&gt;http://vostro-host.com/percorso/al/il-mio-file-pdf/view&lt;br /&gt;non finisce con "&lt;i&gt;.pdf&lt;/i&gt;" ma almeno non mente! Non è un link al file, ma solo una vista&lt;/li&gt;
&lt;li&gt;http://vostro-host.com/percorso/al/il-mio-file-pdf/at_download/file&lt;br /&gt;non finisce con "&lt;i&gt;.pdf&lt;/i&gt;"&lt;/li&gt;
&lt;li&gt;http://vostro-host.com/percorso/al/file.pdf&lt;br /&gt;questo andrebbe bene... peccato che l'unico caso in cui potremmo ottenere questo URL è non fornendo un titolo al file (potreste aggiungere il titolo dopo ma sarebbe troppo scomodo, e dovremmo essere certi che nessuno lo rinomini).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tanto per essere chiari: il Cliente utilizza uno di questi sistemi di statistiche e si è trovato (giustamente) scontento della grande varietà di URL presenti.&lt;/p&gt;
&lt;p&gt;Ci è quindi giusta questa richiesta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;"niente attivazione di plugin, i file vanno scaricati"&lt;/li&gt;
&lt;li&gt;"voglio che gli URL dei file Plone indichino il formato del file".&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Fase 1: fermare il problema&lt;/h2&gt;
&lt;p&gt;Analizzando la situazione, ci siamo resi conto che il comportamento corretto per scaricare file lo abbiamo solo tramite la chiamata a "&lt;strong&gt;/at_download/file&lt;/strong&gt;", che però ha comunque dei problemi:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;non finisce col nome reale del file&lt;/li&gt;
&lt;li&gt;non è utilizzata da TinyMCE.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La fortuna ha voluto che il Cliente utilizzasse già da tempo (e con soddisfazione) una variante del plugin dei link a file in Plone: &lt;a class="external-link" href="http://plone.org/products/collective.tinymceplugins.advfilelinks"&gt;collective.tinymceplugins.advfilelinks&lt;/a&gt;.&lt;br /&gt;Se fino ad allora questo plugin si era sempre limitato ad accorgimenti grafici atti ad aumentare l'&lt;strong&gt;usabilità dei link&lt;/strong&gt; (in primis: &lt;strong&gt;fornire la dimensione del file che si sta per scaricare&lt;/strong&gt;), ora poteva tornarci utile per sistemare una delle funzionalità che TinyMCE non offre: scegliere il &lt;i&gt;tipo&lt;/i&gt; di link al file.&lt;/p&gt;
&lt;p&gt;Abbiamo quindi rilasciato una nuova versione del prodotto che portasse una nuova funzionalità: poter scegliere se avere un link diretto al file (&lt;i&gt;inline&lt;/i&gt;), un link alla vista (&lt;i&gt;preview&lt;/i&gt;) del file o un link per scaricare il file - tramite un nuovo menù a tendina.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.redturtle.it/pypi-images/collective.tinymceplugins.advfilelinks/collective.tinymceplugins.advfilelinks-1.1.0-03.png" /&gt;&lt;/p&gt;
&lt;p&gt;Per questioni di correttezza verso la comunità che già utilizza questo prodotto non sarebbe stato giusto scegliere un valore di default diverso da quello predefinito di TinyMCE, quindi è stato tenuto come valore predefinito il "&lt;i&gt;link diretto al contenuto&lt;/i&gt;".&lt;br /&gt;Ma non era nemmeno pensabile che gli utenti del Cliente cambiassero ogni volta quel menù a tendina... è stato quindi usato un prodotto aggiuntivo che "sistemasse" il valore predefinito (funzionalità nativa, prevista dalla nuova versione di &lt;i&gt;collective.tinymceplugins.advfilelinks&lt;/i&gt;).&lt;/p&gt;
&lt;p&gt;Bene! Ora i link ai file fatti tramite TinyMCE hanno iniziato ad essere link al download reale, tagliando fuori gli eventuali plugin.&lt;/p&gt;
&lt;h2&gt;at_download, Quel Permissivo&lt;/h2&gt;
&lt;p&gt;Ma rimane il problema cruciale delle statistiche.&lt;/p&gt;
&lt;p&gt;Dopo aver eseguito qualche test ci siamo accorti che &lt;strong&gt;la chiamata a "at_download/file" può ricevere altri elementi di percorso senza inficiarne il comportamento&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;La cosa forse è un po' strana, ma richiamando un URL Plone in questo modo...&lt;/p&gt;
&lt;p style="padding-left: 30px; "&gt;http://vostro-host.com/percorso/al/il-mio-file-pdf/at_download/file/fasullo.doc&lt;/p&gt;
&lt;p&gt;... non ottenete errori: L'URL scatena comunque il download del file (e negli header inviati c'è il vero nome "&lt;i&gt;file.pdf&lt;/i&gt;"... non preoccupatevi).&lt;br /&gt;Il sistema di statistiche però in questo caso avrebbe (erroneamente) capito che la risorsa scaricata era un file di Word (.doc).&lt;/p&gt;
&lt;p&gt;Sfruttando questa "&lt;i&gt;funzionalità&lt;/i&gt;" abbiamo reso &lt;i&gt;collective.tinymceplugins.advfilelinks&lt;/i&gt; ancora più flessibile, rendendo possibile indicare, tramite un prodotto di terze parti, come generare gli URL nel caso di "&lt;i&gt;URL alla preview&lt;/i&gt;" o "&lt;i&gt;URL al download&lt;/i&gt;".&lt;br /&gt;Nello stesso prodotto di cui sopra è stato quindi cambiato il valore per il download del file da "&lt;i&gt;/at_download/file&lt;/i&gt;" a "&lt;i&gt;/at_download/file/nome reale del file&lt;/i&gt;".&lt;/p&gt;
&lt;p&gt;Infine, la cosa più semplice: cambiare la vista &lt;i&gt;file_view&lt;/i&gt; perché mostrasse lo stesso URL di download modificato. Per fare questo è stato rilasciato un micro-pacchetto: &lt;a class="external-link" href="http://plone.org/products/rer.downloadurl"&gt;rer.downloadurl&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ok, missione compiuta: da ora in poi i link ai file saranno amichevoli con il software di statistiche!&lt;/p&gt;
&lt;p&gt;... ma i vecchi link?!&lt;/p&gt;
&lt;p&gt;Siete curiosi di sapere come finisce? Per ora ho già scritto troppo; per il resto della Storia ci rivediamo martedì prossimo!&lt;/p&gt;</description>
                <author>Luca Fabbri</author>

                
                    <category>tutorials</category>
                
                
                    <category>products</category>
                
                
                    <category>Plone</category>
                
                
                    <category>plone.it</category>
                

                <pubDate>Fri, 03 May 2013 14:00:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>Bologna, 24 aprile 2013: il World Plone Day della varietà</title>
                <guid>http://blog.redturtle.it/2013/04/29/bologna-world-plone-day-della-varieta</guid>
                <link>http://blog.redturtle.it/2013/04/29/bologna-world-plone-day-della-varieta</link>
                <description>&lt;p&gt;Un inizio in sordina (dopo un paio di quarti d'ora accademici, la grande &lt;strong&gt;sala A di Terza Torre&lt;/strong&gt; stentava a riempirsi) aveva creato una certa apprensione sulla saldezza della fede Plonesca dei settanta iscritti al &lt;a class="external-link" href="http://plone.org/events/wpd/hosts/bologna-italy"&gt;World Plone Day&lt;/a&gt;, ospitato a Bologna dalla &lt;strong&gt;Regione Emilia Romagna&lt;/strong&gt; e patrocinato da Unioncamere regionale.&lt;/p&gt;
&lt;p style="text-align: center; "&gt;&lt;img src="http://blog.redturtle.it/topic_images/intro_wpd_2013.JPG/@@images/f6b739e0-deba-4ae2-961c-370eb03e6135.jpeg" alt="Introduzione al WPD 2013" class="image-inline image-preview" title="Introduzione al WPD 2013" /&gt;&lt;/p&gt;
&lt;p&gt;Ma già nel corso dell'introduzione, affidata al padrone di casa &lt;strong&gt;Giovanni Grazia&lt;/strong&gt;, affluivano i ritardatari: giusto in tempo per godersi la "&lt;i&gt;&lt;strong&gt;Call to arms&lt;/strong&gt;&lt;/i&gt;" del contumace &lt;strong&gt;Jacopo Deyla&lt;/strong&gt;, affidata a un filmato di grande effetto, anche grazie alla prestigiosa (quanto inaspettata) partecipazione dello scrivente, la cui maschia immagine, &lt;strong&gt;un po' alla Zio Sam&lt;/strong&gt;, ha focalizzato il pubblico sulla missione collaborativa della giornata, non senza allusioni velate al &lt;strong&gt;doping ciclistico&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Perché come sempre, se si parla di &lt;strong&gt;World Plone Day&lt;/strong&gt;, l'idea è di mettere a fattor comune le varie esperienze, &lt;strong&gt;imparando&lt;/strong&gt; gli uni dagli altri e &lt;strong&gt;facendo conoscere Plone&lt;/strong&gt; a chi ancora non sa cos'è.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;&lt;/div&gt;
&lt;p&gt;Quest'anno più che mai, visto il "&lt;i&gt;&lt;strong&gt;kata&lt;/strong&gt;&lt;/i&gt;" pomeridiano destinato a creare, grazie a volontari del pubblico, il sito Web dell'&lt;a class="external-link" href="http://it.wikipedia.org/wiki/Alleanza_Ribelle"&gt;Alleanza Ribelle&lt;/a&gt;.&lt;/p&gt;
&lt;p style="text-align: center; "&gt;&lt;img src="http://blog.redturtle.it/topic_images/pubblico_wpd_2013.JPG/@@images/47c2d249-2fa6-48f8-8b69-387fd63228c6.jpeg" alt="Pubblico al WPD 2013" class="image-inline" title="Pubblico al WPD 2013" /&gt;&lt;/p&gt;
&lt;p&gt;Senza entrare nel dettaglio dei singoli interventi, ricordiamo i relatori: &lt;strong&gt;&lt;a class="external-link" href="https://twitter.com/micmord"&gt;Michele Mordenti&lt;/a&gt; (Nuovo Circondario Imolese)&lt;/strong&gt; ha riferito della co-progettazione in ambito PloneGov Italia del modulo per la "trasparenza" (Art. 18); &lt;strong&gt;&lt;a class="external-link" href="https://twitter.com/GiovanniGrazia"&gt;Giovanni Grazia&lt;/a&gt; (Regione Emilia Romagna)&lt;/strong&gt; ha fatto un bilancio di quattro anni di Plone in Regione; &lt;strong&gt;Luca Tebaldi (Università degli Studi di Ferrara) &lt;/strong&gt;ha raccontato di come la migrazione a Plone 4 abbia offerto a UNIFE anche l'occasione per lanciare la versione Mobile del portale istituzionale; ultimo relatore prima del &lt;i&gt;coffee break&lt;/i&gt;, &lt;strong&gt;&lt;a class="external-link" href="https://twitter.com/massimoazzolini"&gt;Massimo Azzolini&lt;/a&gt; (RedTurtle) &lt;/strong&gt;&lt;strong&gt;&lt;a class="external-link" href="http://www.slideshare.net/massimo.azzolini/social-intranet-20026541"&gt;nel suo intervento Plone Social&lt;/a&gt;&lt;/strong&gt; ha analizzato in profondità, e con specifico riferimento a Plone, &lt;strong&gt;il ruolo delle funzionalità Social&lt;/strong&gt; su una Intranet, come &lt;strong&gt;moltiplicatore della produttività&lt;/strong&gt;.&lt;/p&gt;
&lt;div style="text-align: center; "&gt;&lt;img src="http://blog.redturtle.it/topic_images/Social_wpd_2013.JPG/@@images/625a20dd-b7de-4864-ab83-18bfd7cdecdd.jpeg" alt="Plone Social al WPD 2013" class="image-inline" title="Plone Social al WPD 2013" /&gt;&lt;/div&gt;
&lt;p&gt;Il &lt;strong&gt;&lt;i&gt;coffee break&lt;/i&gt;&lt;/strong&gt;, momento di premialità mangereccia per incoraggiare i partecipanti, è stato come sempre un momento di sincero e incondizionato coinvolgimento del pubblico che di lì a poco, lasciando &lt;strong&gt;una lunga scia di briciole che neanche Pollicino&lt;/strong&gt;, ha ripreso il posto in sala senza sapere che le &lt;strong&gt;bevande&lt;/strong&gt; erano state ad arte &lt;strong&gt;addizionate di caffeina e taurina, &lt;/strong&gt;nello spirito dopante più sopra richiamato.&lt;/p&gt;
&lt;p&gt;Era quindi con rinnovata attenzione e ad occhi bene aperti che il pubblico riceveva, apprezzandole, le presentazioni di &lt;strong&gt;Alessandro Balzani (FatOrazio)&lt;/strong&gt;, con il suo sistema di gestione costi e fatturazione online basato su Plone, e a seguire il coinvolgente intervento di &lt;strong&gt;Davide Caviglia (Gis&amp;amp;Web)&lt;/strong&gt;, che illustrava un sistema di gestione delle istanze online integrato con piattaforme GIS open source, già in uso in diverse PA, basato su Plomino: un sistema Plone per il rapido dispiegamento di applicazioni Web.&lt;/p&gt;
&lt;p&gt;Gli interventi di &lt;strong&gt;&lt;a class="external-link" href="https://twitter.com/alepirani"&gt;Alessandro Pirani&lt;/a&gt;&lt;/strong&gt; (Consulente per l'Innovazione del Tribunale di Milano, nonché PloneGover di vecchia data grazie al suo mandato di &lt;strong&gt;Assessore al Comune di Pieve di Cento&lt;/strong&gt;), come lo stesso interessato riconosce, sono sempre da "pierino": Alessandro non è certo timido nel proporre prospettive nuove e magari in controtendenza, e certamente &lt;strong&gt;le esperienze in corso al Tribunale di Milano&lt;/strong&gt; giustificano la sua proposta di una &lt;strong&gt;subcommunity Plone dedicata alla Giustizia&lt;/strong&gt;: esiste una vasta domanda di servizi correlati alla Giustizia, di interesse degli Enti, come ad esempio quelli legati alla volontaria giurisdizione.&lt;/p&gt;
&lt;p&gt;La defezione per cause di forza maggiore della relatrice di AUSL Bologna, un Ente che gestisce con risorse interne una delle più grandi, se non la più grande, infrastruttura Plone italiana - prima come Intranet e ora anche sul fronte Web - imponeva di passare il testimone a &lt;strong&gt;&lt;a class="external-link" href="https://twitter.com/stemrc"&gt;Stefano Marchetti&lt;/a&gt; (RedTurtle)&lt;/strong&gt;, con &lt;a class="external-link" href="http://www.slideshare.net/stemrc/3m-per-plone-mockup-mediacore-mailchimp"&gt;il suo intervento relativo a &lt;strong&gt;Mediacore, MailChimp e Mockup&lt;/strong&gt;&lt;/a&gt;, le "tre M per Plone". Sia la piattaforma free software per la conservazione e la fruizione di audio e video, sia il sofisticato sistema di gestione delle newsletter sono stati una piacevole sorpresa per chi ancora non li conosceva. Con &lt;strong&gt;Mockup&lt;/strong&gt;, il tema si è fatto più tecnico: è possibile avere un "Plone senza Plone"? La risposta è sì, grazie a &lt;span&gt;una combinazione di html, javascript e CSS che consente di affidare le attività di grafica e templating a un designer senza che questi debba necessariamente disporre di un server Plone.&lt;/span&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Non ancora sazi dopo poco più di un'ora dal coffee break, i partecipanti al workshop pomeridiano si sono goduti la &lt;strong&gt;bella giornata&lt;/strong&gt; negli immediati paraggi (e per fortuna nel Fiera District un po' di verde si trova), introitando ulteriori calorie in previsione delle&lt;strong&gt; terribili fatiche&lt;/strong&gt; che avrebbero atteso gli ardimentosi volontari, &lt;strong&gt;proprio al culmine della sonnolenza postprandiale&lt;/strong&gt;.&lt;/p&gt;
&lt;p style="text-align: center; "&gt;&lt;img src="http://blog.redturtle.it/topic_images/pranzo_wpd_2013.JPG/@@images/0ee9c7a2-d509-4079-92dc-69e4441f1f31.jpeg" alt="Pranzo al WPD 2013" class="image-inline" title="Pranzo al WPD 2013" /&gt;&lt;/p&gt;
&lt;p&gt;Rapidamente terminata &lt;strong&gt;l'indegna gozzoviglia&lt;/strong&gt; e ricomposte le fila, ci si è avviati verso la sala pomeridiana dove sono stati attivati &lt;strong&gt;ben due proiettori&lt;/strong&gt;, uno per proporre &lt;strong&gt;la scaletta delle attività&lt;/strong&gt; da svolgere, l'altro per osservare&lt;strong&gt; il work in progress &lt;/strong&gt;dei generosi &lt;strong&gt;volontari&lt;/strong&gt;, qui citati in ordine alfabetico di nome di battesimo: &lt;strong&gt;Carla, Federica, Franco, Jacopo, Michela&lt;/strong&gt; (sperando di non dimenticare nessuno).&lt;/p&gt;
&lt;p&gt;Sotto la guida di un &lt;strong&gt;inflessibile Stefano&lt;/strong&gt;, i volontari - partendo da un'installazione preconfigurata di Plone, già &lt;a class="external-link" href="https://github.com/RedTurtle/wpd2013"&gt;disponibile su Github&lt;/a&gt; assieme alla presentazione con la lista dei passi da seguire -&lt;strong&gt; hanno impersonato i membri dell'Alleanza Ribelle&lt;/strong&gt; intenti a creare la homepage del pianeta Hoth.&lt;/p&gt;
&lt;p&gt;Senza neppure necessità di (troppa) violenza fisica, Stefano è riuscito a coordinare con successo, anche grazie a moduli Plone selezionati con accortezza, la creazione di questo sito, nel cui ambito spiccava &lt;strong&gt;il gettonatissimo tipo di contenuto "Starship"&lt;/strong&gt;, che ha dato occasione per parlare di &lt;a class="external-link" href="http://developer.plone.org/content/dexterity.html"&gt;Dexterity&lt;/a&gt; e che certamente si candida a uno specifico riuso in ambito PloneGov.&lt;/p&gt;
&lt;p style="text-align: center; "&gt;&lt;img src="http://blog.redturtle.it/topic_images/kata_wpd_2013.JPG/@@images/108aed08-cf45-4acd-a94b-19cc46113045.jpeg" alt="Workshop al WPD 2013" class="image-inline" title="Workshop al WPD 2013" /&gt;&lt;/p&gt;
&lt;p&gt;Più ancora che essere utile ai volontari, alcuni dei quali già decisamente a proprio agio con Plone, la rapida sequenza di attività in due ore dal concetto alla realizzazione &lt;strong&gt;è servita al pubblico&lt;/strong&gt;, tra cui spiccavano le presenza di alcuni &lt;strong&gt;Enti che stanno seriamente valutando l'adozione&lt;/strong&gt; del nostro CMS preferito, e che certamente avranno tratto da questo pomeriggio di lavoro la più rasserenante delle impressioni.&lt;/p&gt;
&lt;p&gt;E così il WPD è volto al termine in una bella serata primaverile, lasciando &lt;strong&gt;positivi strascichi&lt;/strong&gt; tra cui l'annuncio di un &lt;strong&gt;PloneGov Sprint&lt;/strong&gt; (stay tuned!), e la certezza che la missione divulgativo-collaborativa invocata dal filmato iniziale è stata raggiunta.&lt;/p&gt;</description>
                <author>Cesare Brizio</author>

                
                    <category>Plone</category>
                
                
                    <category>community</category>
                
                
                    <category>eventi</category>
                

                <pubDate>Mon, 29 Apr 2013 15:00:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>Sunburst e i css + dtml: se li conosci NON li eviti</title>
                <guid>http://blog.redturtle.it/2013/04/23/sunburst-css-dtml</guid>
                <link>http://blog.redturtle.it/2013/04/23/sunburst-css-dtml</link>
                <description>&lt;p&gt;Alzi la mano chi, almeno una volta, ha maledetto Sunburst (il tema integrato nelle versioni di Plone 4.x) per averci privato di un preziosissimo supporto nello sviluppo dei temi grafici: &lt;a class="external-link" href="http://plone.org/documentation/glossary/dtml" target="_blank"&gt;la sintassi DTML&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Alzi la mano chi ha sul muro dell'ufficio i segni inequivocabili di tazze, portapenne, robottini e cancelleria varia scagliati contro la personificazione di quel public.css di Sunburst che porta scolpito il blu &lt;span&gt;#205C90 nei più reconditi recessi delle proprie righe.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;&lt;/div&gt;
&lt;p&gt;Proprio così: il formato DTML è stato ufficialmente abbandonato e relegato alle versioni di Plone &amp;lt;= 3.x.&lt;/p&gt;
&lt;p&gt;Attenzione: abbandonato non vuol dire "non supportato". Nei nostri temi basati su Sunburst possiamo tranquillamente introdurre file .dtml.&lt;br /&gt;Allora non ci resta che prendere esempio dagli sceneggiatori di Beautiful e riportarli alla vita con un bel "&lt;i&gt;coup de theatre&lt;/i&gt;".&lt;/p&gt;
&lt;p&gt;Lo scopo di questo post non è di spiegarne l'uso, la sintassi o elencarne pregi o difetti. E' una scelta individuale e organizzativa che può essere o meno condivisibile. Ma per tutti i "&lt;i&gt;plone-skinner&lt;/i&gt;" che la pensano come me, metto a disposizione la mia personale panacea:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;il buon vecchio &lt;strong&gt;&lt;a href="http://blog.redturtle.it/uploads/base_properties.props" class="internal-link"&gt;base_properties.props&lt;/a&gt;&lt;/strong&gt;, ampliato con ulteriori personalizzazioni (stili per la descrizione, bordo inferiore sui link, colore di hover sui link...)&lt;/li&gt;
&lt;li&gt;un file &lt;strong&gt;&lt;a href="http://blog.redturtle.it/uploads/sunburst_public.css.dtml" class="internal-link"&gt;sunburst_public.css.dtml&lt;/a&gt;&lt;/strong&gt; (da aggiungere al proprio tema) che fa uso del &lt;i&gt;base_properties.props&lt;/i&gt; per ridefinire tutti gli stili (e solo quelli) del &lt;i&gt;public.css&lt;/i&gt; di &lt;strong&gt;Sunburst&lt;/strong&gt; in cui sia possibile sostituire un valore statico con una variabile dtml.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Entrambi i files vanno inseriti nella cartella "skins/miotema_styles" del proprio pacchetto. Il file sunburst_public.css.dtml dovrà essere registrato in profiles/default/cssregistry.xml con la classica direttiva:&lt;/p&gt;
&lt;pre&gt;&amp;lt;stylesheet id="sunburst_public.css" &lt;br /&gt;            media="screen" rel="stylesheet" &lt;br /&gt;            rendering="link"&lt;br /&gt;            cacheable="True"&lt;br /&gt;            compression="safe"&lt;br /&gt;            cookable="True"&lt;br /&gt;            enabled="1"&lt;br /&gt;            expression=""/&amp;gt;&lt;/pre&gt;
&lt;p&gt;Consiglio di registrarlo &lt;strong&gt;prima&lt;/strong&gt; del file css specifico del tema (esempio &lt;i&gt;miotema.css&lt;/i&gt;).&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Vantaggi?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Molteplici:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;cambiare faccia a Sunburst in 5 minuti &lt;/li&gt;
&lt;li&gt;evitare di sovrascrivere l'intero &lt;i&gt;public.css &lt;/i&gt;&lt;/li&gt;
&lt;li&gt;ridurre gli episodi di ipertensione e nervosismo&lt;/li&gt;
&lt;li&gt;preservare il candore del muro del proprio ufficio.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;Svantaggi?&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;Onestamente non ne vedo nessuno, salvo il fatto che il giorno in cui i dtml verranno definitivamente deprecati si dovrà necessariamente rivedere il proprio codice... ma in una simile circostanza si starà senz'altro procedendo con una migrazione di versione "&lt;i&gt;major&lt;/i&gt;" e potreste sfruttare l'occasione per proporre un bel restyling del sito ;-)&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Avvertenze e modalità d'uso: &lt;/i&gt;l'uso del prodotto può creare dipendenza e assuefazione. Assumere a piccole dosi e intervallare con la somministrazione di un tema &lt;strong&gt;Diazo&lt;/strong&gt; per equilibrare i valori di "&lt;i&gt;cssemia"&lt;/i&gt;.&lt;/p&gt;</description>
                <author>Irene Capatti</author>

                
                    <category>Plone 4</category>
                
                
                    <category>plone.it</category>
                
                
                    <category>css</category>
                

                <pubDate>Tue, 23 Apr 2013 09:00:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>How to automatically refresh your database in "silent mode"</title>
                <guid>http://blog.redturtle.it/2013/04/12/how-to-automatically-refresh-your-database-in-silent-mode</guid>
                <link>http://blog.redturtle.it/2013/04/12/how-to-automatically-refresh-your-database-in-silent-mode</link>
                <description>&lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: a development server, a release server and many production customers' servers: nothing more classic.&lt;/p&gt;
&lt;p class="breakText" id="_mcePaste"&gt;Every time a change is deployed on the release server, the best thing would be to "push" it automatically on production server, or as soon as possible (at least).&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;We know that Lotus Domino provides the "Refresh design tool", but it requires a Lotus client installed and open, and a manual operation.&lt;/div&gt;
&lt;p class="breakText"&gt;Maybe you can work with replicas of the template, but, in any case, the "optimum" would be:&lt;/p&gt;
&lt;div id="_mcePaste"&gt;&lt;/div&gt;
&lt;div id="_mcePaste"&gt;
&lt;ul&gt;
&lt;li&gt;break away from the dependence of the Lotus Notes client&lt;/li&gt;
&lt;li&gt;schedule the operation in automatic mode.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p&gt;So what?&lt;/p&gt;
&lt;h2&gt;Many solutions found over the Web, but...&lt;/h2&gt;
&lt;p&gt;As reported in this &lt;a class="external-link" href="http://www-10.lotus.com/ldd/nd6forum.nsf/55c38d716d632d9b8525689b005ba1c0/6128e935dae691d580256df9003fb5a4?OpenDocument"&gt;thread&lt;/a&gt;, automatic refresh design is something desired, perhaps to have something scheduled (agent), but even if low level Notes API are provided, it always requires an opened client and, in this case, a Windows client (API uses &lt;i&gt;dll&lt;/i&gt;)!&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;&lt;i&gt;Typically &lt;/i&gt;&lt;i&gt;'load convert' command is used for mail database&lt;/i&gt;&lt;/blockquote&gt;
&lt;p&gt;I remembered something about notes mail database administration, and a very cool stuff to upgrade mail templates, with this command:&lt;/p&gt;
&lt;pre&gt;load convert -n maildb.nsf * template.ntf&lt;/pre&gt;
&lt;p&gt;So, why not apply the same method to &lt;strong&gt;not-mail&lt;/strong&gt; database?&lt;/p&gt;
&lt;p&gt;I've investigated a lot, I've also opened a discussion on &lt;a class="external-link" href="http://stackoverflow.com/questions/14998328/mail-conversion-utility-of-a-non-mail-database-using-remote-server"&gt;Stackoverflow&lt;/a&gt; and many authoritative people (&lt;a class="external-link" href="http://www.poweroftheschwartz.com/"&gt;Richard H. Schwartz&lt;/a&gt;, &lt;a class="external-link" href="http://per.lausten.dk/blog/"&gt;Per Henrik Lausten&lt;/a&gt;) answered me about different approaches, but I think that "load convert way" could be a good solution.&lt;/p&gt;
&lt;p&gt;Be careful! If you try this, you can run into some problems: below I'll try to answer at the most commons I've experienced, and steps to resolve them.&lt;/p&gt;
&lt;h3&gt;Q:&lt;/h3&gt;
&lt;p&gt;What about if templates are on remote server?&lt;/p&gt;
&lt;h3&gt;A:&lt;/h3&gt;
&lt;p&gt;It's possible to directly refer the remote template, using this syntax:&lt;/p&gt;
&lt;pre&gt;load convert -n mydatabase.nsf * remoteserver!!template.ntf&lt;/pre&gt;
&lt;p&gt;where &lt;i&gt;&lt;strong&gt;remoteserver &lt;/strong&gt;&lt;/i&gt;is abbreviated name (e.g. &lt;i&gt;removeServerName/OrgUnit/Org&lt;/i&gt;).&lt;/p&gt;
&lt;p&gt;NOTICE: database and remote template could also be located in subfolder, so you can use:&lt;/p&gt;
&lt;pre&gt;load convert -n dir1/dir2/mydatabase.nsf * remoteserver!!dir3/dir4/template.ntf&lt;/pre&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Q:&lt;/h3&gt;
&lt;p&gt;When I send the command, I obtain this error: &lt;i&gt;'Mail Upgrade Failed: Unable to open design template file ......Unable to find path to server'&lt;/i&gt;"&lt;/p&gt;
&lt;h3&gt;A:&lt;/h3&gt;
&lt;p&gt;On production server, you need to create a connection to the release server, as shown in pictures:&lt;/p&gt;
&lt;p&gt;&lt;img alt="connections" class="image-inline" src="http://blog.redturtle.it/uploads/copy_of_connections.JPG" title="connections" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Q:&lt;/h3&gt;
&lt;p&gt;After the connection is done, I obtain this error: 'The Address Book does not contain a cross certificate capable of validating the public key'&lt;/p&gt;
&lt;h3&gt;A:&lt;/h3&gt;
&lt;p&gt;A cross-certification between organizations is needed, in both directions (release server to production server and vice-versa), using &lt;i&gt;server.id &lt;/i&gt;and &lt;i&gt;cert.id.&lt;/i&gt;&lt;/p&gt;
&lt;h2&gt;Ready to go!&lt;/h2&gt;
&lt;p&gt;All the prerequisites for a correct communication are made.&lt;/p&gt;
&lt;p&gt;Now is possible to schedule the refresh command whenever you want, in your preferred way, for example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;making a &lt;i&gt;program&lt;/i&gt; (see &lt;a class="external-link" href="http://www-01.ibm.com/support/docview.wss?uid=swg21088932"&gt;here&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;with a &lt;i&gt;scheduled agent&lt;/i&gt; that send commands to server&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Next lines show how to do this in a Java agent:&lt;/p&gt;
&lt;pre&gt;String command = "load convert -n mydatabase.nsf * remoteserver!!template.ntf";
System.out.println(session.sendConsoleCommand("", command));&lt;/pre&gt;
&lt;p&gt;That's all! Feel free to let me know what do you think about this approach. Any comment/review will be appreciated!&lt;/p&gt;</description>
                <author>Andrea Baglioni</author>

                
                    <category>Lotus</category>
                
                
                    <category>tutorials</category>
                
                
                    <category>Domino</category>
                

                <pubDate>Fri, 12 Apr 2013 15:30:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>Plog 2013, due giorni al Plone Open Garden tra idee e nuove sfide</title>
                <guid>http://blog.redturtle.it/2013/04/12/plog-2013-due-giorni-al-plone-open-garden-tra-idee-e-nuove-sfide</guid>
                <link>http://blog.redturtle.it/2013/04/12/plog-2013-due-giorni-al-plone-open-garden-tra-idee-e-nuove-sfide</link>
                <description>&lt;p&gt;Come già annunciato nelle ultime news di Plone.it, dal 3 al 7 di Aprile si è svolto nella magnifica &lt;b&gt;Sorrento&lt;/b&gt; uno degli eventi "must have" italiani su Plone, il &lt;b&gt;Plone Open Garden&lt;/b&gt;. &lt;br /&gt;In rappresentanza delle tartarughe, &lt;b&gt;Massimo Azzolini e io&lt;/b&gt; siamo arrivati in città il giorno prima dell'inizio ufficiale. Il nostro timore era di essere i soli plonisti in città quella sera, ma appena arrivati in hotel abbiamo avuto la piacevole sorpresa di non essere arrivati tra i primi, bensì tra gli ultimi!&lt;/p&gt;
&lt;p&gt;Così l'evento è iniziato già la sera del 2, durante l'aperitivo dell'hotel.&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;In eventi come il Plog, la comunità Plone mostra le sue qualità migliori: giovialità e socievolezza.&lt;/blockquote&gt;
&lt;p&gt;Eventi come il Plog servono anche a stringere nuove amicizie, nuove collaborazioni o semplicemente ritrovare persone che vivono dalla parte opposta del globo e con cui magari si collabora giornalmente a rendere il nostro amato cms sempre più "cool".&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;&lt;/div&gt;
&lt;h2&gt;Day 1... si aprano le danze!&lt;/h2&gt;
&lt;p&gt;Mercoledì 3, di buonora, sono iniziati i lavori dell'evento. Date le condizioni atmosferiche non ottime, tra i partecipanti si è subito diffusa la gag di rinominare l'evento in "&lt;b&gt;Plone Open Hall&lt;/b&gt;" o "&lt;b&gt;Plone Open Basement&lt;/b&gt;", per la location scelta per i talk.&lt;/p&gt;
&lt;p&gt;Ad aprire le danze sono stati due famosi plonisti francesi, Thomas Desvain e Cédric Messiant. &lt;a class="external-link" href="http://www.slideshare.net/ThomasDesvenain/collectivelocal-plog2013-v2"&gt;Thomas ha presentato&lt;/a&gt; una suite di prodotti molto interessanti per la &lt;b&gt;delega di permessi agli utenti limitatamente ad un certo contesto &lt;/b&gt;di un sito Plone. Tra i prodotti presentati spiccano &lt;b&gt;collective.local.adduser&lt;/b&gt; per delegare la creazione di utenti locali; &lt;b&gt;collective.local.addgroup&lt;/b&gt; per la delega di creazione dei gruppi; infine &lt;b&gt;collective.local.sendto&lt;/b&gt; per la delega di invio di email agli utenti. Tutti i prodotti di questa suite sono disponibili su github:&lt;a class="external-link" href="https://github.com/tdesvenain"&gt; https://github.com/tdesvenain&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Il collega &lt;a class="external-link" href="http://www.slideshare.net/cedricmessiant/collectivecontact-plog2013"&gt;Cédric ha presentato&lt;/a&gt; un'altra suite di &lt;b&gt;prodotti per la gestione di una rete di contatti/esperti all'interno di un'azienda&lt;/b&gt;. La soluzione prevede di poter definire dei gruppi, dei ruoli nei gruppi e degli esperti per i ruoli. La metafora usata durante il talk rappresenta i gruppi con i raggruppamenti gerarchici di un esercito (armata, reggimento); i ruoli sono il corrispondente dei gradi dell'esercito (generale, comandante) e gli esperti sono i singoli soldati. La suite di prodotti è disponibile come al solito su github:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="external-link" href="https://github.com/collective/collective.contact.plonegroup"&gt;https://github.com/collective/collective.contact.plonegroup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://github.com/vincentfretin/collective.contact.core"&gt;https://github.com/vincentfretin/collective.contact.core&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="external-link" href="https://github.com/vincentfretin/collective.contact.widget"&gt;https://github.com/vincentfretin/collective.contact.widget&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Dopo i colleghi francesi è stato il turno di quelli olandesi, con &lt;b&gt;Guido Stevens&lt;/b&gt; che ha &lt;a class="external-link" href="http://www.slideshare.net/GuidoStevens/plonesocial-roadmap"&gt;presentato&lt;/a&gt; la sua soluzione social per Plone, &lt;b&gt;PloneSocial&lt;/b&gt;. La chiarezza della visione di cosa c'è nel futuro social di Plone ha lasciato molti piacevolmente impressionati. Il cuore del talk, più che l'insieme dei dettagli tecnici, è stata la presentazione di una roadmap per il completamento del social networking in Plone.&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;Studi di settore hanno dimostrato che le interazioni lavorative di tipo social all'interno di un'azienda aumentano la produttività dei dipendenti del 20-25%!&lt;/blockquote&gt;
&lt;p&gt;La suite di prodotti copre per ora le funzionalità di microblogging, activity stream, follow di utenti o di aree di contenuti e aree di team working. Più di un partecipante al talk era interessato a come avesse affrontato il problema delle performance e Guido ha dimostrato che, attraverso ingegnose soluzioni tecniche, è possibile assicurare la scalabilità sia in alto sia in basso del sistema.&lt;br /&gt;Dopo una breve pausa, &lt;b&gt;ha preso la parola il nostro Massimo per &lt;a class="external-link" href="http://www.slideshare.net/massimo.azzolini/agile-values-methods-and-software"&gt;presentare l'esperienza di RedTurtle&lt;/a&gt; nel mondo del software agile, i problemi comuni e le soluzioni aziendali adottate, sia di tipo organizzativo interno sia come strumenti sviluppati, tra cui Penelope&lt;/b&gt;. Il nostro approccio e le nostre soluzioni hanno attirato l'interesse e le domande di molti colleghi Plonisti che si trovano ad affrontare tutti i giorni gli stessi problemi.&lt;/p&gt;
&lt;h2&gt;&lt;img src="http://blog.redturtle.it/uploads/image.jpeg" title="plog2013-banner" height="286" width="224" alt="plog2013-banner" class="image-left" /&gt;&lt;/h2&gt;
&lt;p&gt;L'ultimo &lt;a class="external-link" href="http://www.slideshare.net/gborelli/plog2013-lets-get-a-better-collectivegeo-and-improve-plone-for-georeferenced-content"&gt;talk&lt;/a&gt; della mattinata è stato di &lt;b&gt;Giorgio Borelli&lt;/b&gt;, collega plonista italiano, che ha raccontato l'ormai noto e apprezzato prodotto Plone per la geolocalizzazione, &lt;b&gt;collective.geo&lt;/b&gt; e la sua roadmap per l'evento.&lt;/p&gt;
&lt;p&gt;Nel pomeriggio i lavori sono ripresi con degli sprint su vari argomenti. Lo sprint in assoluto più partecipato è stato incentrato su una &lt;b&gt;discussione sullo stato dell'universo dei prodotti Plone e su come migliorarne sempre più la qualità e la tracciabilità&lt;/b&gt;. Dalla discussione è nata l'idea di istituire un concorso annuale per i "migliori 50 prodotti di Plone", in modo da sfruttare questa piccola competizione per spingere la comunità a curare sempre più i propri prodotti.&lt;/p&gt;
&lt;p&gt;Nel resto del pomeriggio ho partecipato al gruppo della documentazione, mentre Massimo a quello del Marketing. Nel nostro gruppo ci siamo occupati di trascrivere nero su bianco il processo di rilascio di una nuova release di Plone, le persone coinvolte e gli step da seguire. Abbiamo proseguito con la stesura della documentazione sul processo di installazione passo passo di Plone sui più diffusi sistemi operativi.&lt;/p&gt;
&lt;h2&gt;Day 2... the show must go on!&lt;/h2&gt;
&lt;p&gt;Il secondo giorno di conferenza si è aperto con un talk di &lt;b&gt;Antonio De Marinis dell'Agenzia Europea per l'Ambiente&lt;/b&gt; (eea.europa.eu).&lt;/p&gt;
&lt;p&gt;Lo scopo del &lt;a class="external-link" href="http://www.slideshare.net/demarant/visualize-open-data-with-plone-da-viz-plog-2013"&gt;talk&lt;/a&gt; è stato quello di presentare i lavori dell'Agenzia, fare una panoramica su cosa sia l'Open Data e presentare uno prodotti sviluppati, &lt;a class="external-link" href="http://plone.org/products/eea.daviz"&gt;eea.daviz&lt;/a&gt;. Questo prodotto permette di visualizzare di dati provenienti dai dataset mondiali in forma di grafici. &lt;br /&gt;A seguire ha preso la parola l'attuale presidente della Plone Foundation, &lt;b&gt;Paul Roeland&lt;/b&gt;&lt;b&gt;, &lt;/b&gt;che ha fatto un report sullo stato della fondazione, sui progetti aperti e sulle sovvenzioni per l'organizzazione di nuovi eventi. &lt;br /&gt;Dopo una breve pausa ha preso la parola &lt;b&gt;Érico Andrei&lt;/b&gt; di Simples Consultoria, l'azienda che quest'anno ha ricevuto l'incarico di organizzare l'annuale conferenza mondiale di Plone.&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;"...siamo qui per farvi vedere come spendiamo i soldi dell'Agenzia, che  in fin dei conti, sono anche i vostri soldi!" (cit. A. De Marinis)&lt;/blockquote&gt;
&lt;p&gt;Come da previsioni, il talk è iniziato con un resoconto dello stato dei lavori dell'organizzazione dell'evento e delle location identificate. &lt;b&gt;Dall'entusiasmo mostrato da &lt;span&gt;É&lt;/span&gt;rico ci si aspetta che la Plone Conference 2013 sarà un evento da non perdere&lt;/b&gt;. Nella seconda parte del suo talk, Andrei è passato a presentare lo stato di avanzamento di un prodotto presentato in anteprima all'ultima PloneConf, &lt;a class="external-link" href="https://github.com/collective/collective.cover"&gt;collective.cover.&lt;/a&gt; Questo prodotto, molto interessante, ha lo scopo di &lt;b&gt;fornire alle nostre redazioni uno strumento per la costruzione di homepage in maniera facile, veloce e estremamente flessibile&lt;/b&gt;. L'idea di base del prodotto non è nuova, esistevano già vari prodotti per questo scopo - come il più vecchio e famoso &lt;a class="external-link" href="http://plone.org/products/collective.portletpage"&gt;collective.portletpage&lt;/a&gt; -, ma collective.cover sembra un passo avanti per la flessibilità e per l'utilizzo di tecnologie all'avanguardia che entreranno in Plone nelle prossime release.&lt;/p&gt;
&lt;p&gt;Nel pomeriggio, come il giorno precedente, sono ripresi gli sprint. Massimo ed io abbiamo continuato a partecipare ai gruppi del giorno precedente. I lavori della documentazione si sono concentrati sulla preparazione di uno script per l'installazione guidata di tutte le dipendenze di Plone. Lo script, grazie a una grafica minimale, guida l'utente nell'altrimenti delicato compito di preparare il sistema ad ospitare Plone. Il gruppo del Marketing si è concentrato invece sull'identificazione della lista di 50 prodotti "consigliati" di Plone.&lt;/p&gt;
&lt;h2&gt;Day 3... leaving Sorrento is never easy, I saw the light fading out!&lt;/h2&gt;
&lt;p&gt;Il dovere purtroppo non guarda in faccia nessuno. Il terzo giorno, infatti, la sveglia ci ha riportato alla realtà alle 5 am per prendere il treno che da Napoli ci avrebbe riportato a Ferrara. Dopo 7 ore di viaggio siamo tornati alla nostra città, con un carico di &lt;b&gt;nuovi spunti di approfondimento su soluzioni e prodotti basati sul nostro amato cms Plone&lt;/b&gt;.&lt;/p&gt;</description>
                <author>Giacomo Spettoli</author>

                
                    <category>conference</category>
                
                
                    <category>eventi</category>
                
                
                    <category>plone.it</category>
                
                
                    <category>community</category>
                
                
                    <category>Plone</category>
                

                <pubDate>Fri, 12 Apr 2013 12:20:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>Gallerie e Slider di immagini per il tuo sito web: eccone 20 esempi! </title>
                <guid>http://blog.redturtle.it/2013/04/08/gallerie-slider-immagini-sito-web-20-esempi</guid>
                <link>http://blog.redturtle.it/2013/04/08/gallerie-slider-immagini-sito-web-20-esempi</link>
                <description>&lt;p class="p1"&gt;La maggior parte dei clienti chiede una &lt;strong&gt;gallery&lt;/strong&gt; o uno &lt;strong&gt;slider&lt;/strong&gt; nel proprio sito. In effetti, un carousel di immagini può fare una grande differenza e dare quel tocco &lt;i&gt;cool&lt;/i&gt; al portale.&lt;/p&gt;
&lt;p class="p1"&gt;E' per questo che spesso mi piace perdermi alla ricerca di qualcosa di nuovo da proporre. Qui sotto ho elencato una serie di slider e gallery costituiti principalmente da &lt;strong&gt;JQuery plugin&lt;/strong&gt; e &lt;strong&gt;CSS3&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 class="p1"&gt;&lt;a class="external-link" href="http://buildinternet.com/project/supersized/"&gt;supersized! JQuery plugin&lt;/a&gt;&lt;/h2&gt;
&lt;h3 class="p1" style="text-align: left; "&gt;Supersized è un fullscreen background slideshow costruito utilizzando la libreria jQuery.&lt;/h3&gt;
&lt;p class="p1" style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://buildinternet.com/project/supersized/slideshow/3.2/demo.html"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="p2"&gt;&lt;a class="external-link" href="http://buildinternet.com/project/supersized/"&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/supersized.png/@@images/2c14dd26-c534-42b7-85ad-b2fe0b2e1d48.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p class="p2"&gt;&lt;span class="s1"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;&lt;/div&gt;
&lt;h2 class="external-link"&gt;&lt;a class="external-link" href="http://manos.malihu.gr/sideways-jquery-fullscreen-image-gallery/"&gt;SIDEWAYS&lt;/a&gt;&lt;/h2&gt;
&lt;h3 class="p1"&gt;Una galleria fullscreen di immagini creata con la libreria jQuery e CSS. La galleria presenta le immagini a schermo intero in diverse modalità e con barre di scorrimento personalizzate.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://manos.malihu.gr/tuts/sideways_jquery_fullscreen_image_gallery.html"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p class="p1"&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/sideways.png/@@images/8bad9c57-9c3e-4e29-b8dd-3aac1f6ea453.png" /&gt;&lt;/p&gt;
&lt;p class="p1"&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 class="breakText"&gt;&lt;a class="external-link" href="http://www.webstuffshare.com/2012/07/flyout-image-slider-using-jquery-css3/"&gt;Flyout Image Slider Using jQuery &amp;amp; CSS3&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Uno slider costituito da una pila di immagini, che funziona facendo “volare” l'immagine selezionata davanti alla pila. Usa le transizioni CSS3, animazione e jQuery.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://webstuffshare.com/demo/FlyoutSlider/index.html"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/FlyoutSlider.png/@@images/d918e5af-688f-4566-98fb-c3624603f8b5.png" /&gt;&lt;/p&gt;
&lt;p class="p3"&gt; &lt;/p&gt;
&lt;h2 class="p3"&gt;&lt;a class="external-link" href="http://www.egrappler.com/full-screen-responsive-jquery-image-and-content-sliderrslider/"&gt;Rslider&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Uno slider jQuery di immagini e contenuti, fullscreen e responsive.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://www.egrappler.com/responsive-image-content-slider/index.htm"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/responsiveimagecontentslider.png/@@images/a42eecfc-1038-4402-a29d-31ee15bc5f1a.png" /&gt;&lt;/p&gt;
&lt;p class="p1"&gt; &lt;/p&gt;
&lt;h2 class="external-link"&gt;&lt;a class="external-link" href="http://www.webstuffshare.com/2012/07/portfolio-flipping-slider-using-jquery-css3/"&gt;Portfolio Flipping Slider Using jQuery &amp;amp; CSS3&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Uno slider per visualizzare il proprio portfolio con un effetto "flipping" per l'impaginazione. Usa jQuery e trasformazioni CSS3.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://webstuffshare.com/demo/FlippingSlider/index.html"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/FlippingSlider.png/@@images/3e35fcac-0ae4-40a9-b9be-489f8b32910a.png" /&gt;&lt;/p&gt;
&lt;p class="p2"&gt; &lt;/p&gt;
&lt;h2 class="p3"&gt;&lt;a class="external-link" href="http://www.sequencejs.com/themes/category/free/"&gt;Sequence&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Uno slider responsive che usa transizioni CSS3 avanzate.&lt;/h3&gt;
&lt;p&gt;&lt;img class="image-left" src="http://blog.redturtle.it/uploads/slidinghorizontalparallax.png/@@images/3cd4d953-429f-4c6c-82e4-d622e715515a.png" /&gt;&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;Sliding Horizontal Parallax Theme&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class="external-link" href="http://www.sequencejs.com/themes/sliding-horizontal-parallax/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="visualClear"&gt;&lt;/div&gt;
&lt;p&gt;&lt;img class="image-left" src="http://blog.redturtle.it/uploads/modernslidein.png/@@images/2bedee8e-399d-4df9-b8db-4bd3b7c723c1.png" /&gt;&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;Apple iPhone4 Style Theme&lt;/blockquote&gt;
&lt;p class="p1"&gt;&lt;strong&gt;&lt;a class="external-link" href="http://www.sequencejs.com/themes/apple-style/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="visualClear"&gt;&lt;/div&gt;
&lt;p style="text-align: center; "&gt;&lt;img class="image-left" src="http://blog.redturtle.it/uploads/applestyle.png/@@images/b5f91b3f-a0e5-4258-b191-a93770e8e287.png" /&gt;&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;Minimalist Horizontal Sliding Theme&lt;/blockquote&gt;
&lt;p class="p1"&gt;&lt;strong&gt;&lt;a class="external-link" href="http://www.sequencejs.com/themes/modern-slide-in/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="visualClear"&gt;&lt;/div&gt;
&lt;p class="p1"&gt; &lt;/p&gt;
&lt;h2 class="external-link"&gt;&lt;a class="external-link" href="http://tympanus.net/codrops/2012/08/02/animated-responsive-image-grid/"&gt;Animated Responsive Image Grid&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Un plugin jQuery per la creazione di una griglia di immagini responsive che cambia automaticamente le immagini con animazioni e tempi diversi.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://tympanus.net/Development/AnimatedResponsiveImageGrid/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/copy_of_animatedresponsiveimagegrid.png/@@images/348f122e-362e-4417-938f-7861fefc1dc3.png" /&gt;&lt;/p&gt;
&lt;p class="p2"&gt; &lt;/p&gt;
&lt;h2 class="p3"&gt;&lt;a class="external-link" href="http://www.webstuffshare.com/2012/05/showing-image-with-bounce-effect/"&gt;Showing Image With Bounce Effect&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Un effetto di rimbalzo quando viene mostrata un'immagine, creato utilizzando trasformazioni CSS3 e animazione.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://webstuffshare.com/demo/BounceEffect/index.html"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/BounceEffect.png/@@images/71356b40-9b2f-4a3d-b36c-657205268c6c.png" /&gt;&lt;/p&gt;
&lt;p class="p2"&gt; &lt;/p&gt;
&lt;h2 class="p3"&gt;&lt;a class="external-link" href="http://tympanus.net/codrops/2012/08/16/triple-panel-image-slider/"&gt;Triple Panel Image Slider&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Uno slider jQuery di immagini a pannello triplo con un look 3D.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://tympanus.net/Tutorials/TriplePanelImageSlider/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/TriplePanelImageSlider.png/@@images/0f241448-985f-404a-8fa8-d0effc738e9c.png" /&gt;&lt;/p&gt;
&lt;p class="p1"&gt; &lt;/p&gt;
&lt;h2 class="p3"&gt;&lt;a class="external-link" href="http://www.minimit.com/works/minimit-gallery-plugin"&gt;Minimit&lt;/a&gt;&lt;/h2&gt;
&lt;h3 class="p1"&gt;Minimit Gallery è un plugin slider che supporta transizioni e trasformazioni CSS3, trascinamento, scroller, e interazioni touch.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://www.minimit.com/mg/demo.html"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-left" src="http://blog.redturtle.it/uploads/minimit.png/@@images/50f37580-65b9-40d3-9e42-5c5c22103649.png" /&gt;&lt;/p&gt;
&lt;h3 class="p1"&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/minimit1.png/@@images/8a20f79b-f6c0-489e-b4bd-72ededbf2a37.png" /&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/minimit2.png/@@images/e11216c2-8e2d-4388-8d13-ba9f00156839.png" /&gt;&lt;/p&gt;
&lt;p class="p1"&gt; &lt;/p&gt;
&lt;p class="p1"&gt; &lt;/p&gt;
&lt;h2 class="p3"&gt;&lt;a class="external-link" href="http://www.script-tutorials.com/css3-parallax-scrolling-slider/"&gt;CSS3 Parallax scrolling slider&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Uno slider verticale che usa solamente proprietà CSS3.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://www.script-tutorials.com/demos/273/index.html"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/CSS3Parallaxscrollingslider.png/@@images/0090ba95-3722-40d0-8eff-b2a2ad7e4866.png" /&gt;&lt;/p&gt;
&lt;p class="p2"&gt; &lt;/p&gt;
&lt;h2 class="p3"&gt;&lt;a class="external-link" href="http://tympanus.net/codrops/2012/06/06/image-accordion-with-css3/"&gt;Image Accordion with CSS3&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Un accordion di immagini che espande un elemento al click.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://tympanus.net/Tutorials/CSS3ImageAccordion/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/CSS3ImageAccordion.png/@@images/656ed21d-0886-4e81-9446-cc1c69aeb88f.png" /&gt;&lt;/p&gt;
&lt;p class="p2"&gt; &lt;/p&gt;
&lt;h2 class="p3"&gt;&lt;a class="external-link" href="http://vegas.jaysalvat.com/"&gt;Vegas&lt;/a&gt;, Background jQuery Plugin&lt;/h2&gt;
&lt;h3&gt;Uno slider di diversi background.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://vegas.jaysalvat.com/demo/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/vegas.png/@@images/ed27a5db-d0b8-4680-9309-eb2fe635a6f9.png" /&gt;&lt;/p&gt;
&lt;p class="p3"&gt; &lt;/p&gt;
&lt;h2 class="p3"&gt;&lt;a class="external-link" href="http://tympanus.net/codrops/2011/09/12/elastislide-responsive-carousel/"&gt;Elastislide&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Carousel responsive di immagini che si adatterà in modo fluido a un layout. Si tratta di un plugin per jQuery che può essere disposto in orizzontale o in verticale.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://tympanus.net/Development/Elastislide/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p style="text-align: center; "&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/Elastislide.png/@@images/683f37ad-76f5-4572-a091-302bb81ff8dd.png" /&gt;&lt;/p&gt;
&lt;p style="text-align: center; "&gt; &lt;/p&gt;
&lt;h2 class="external-link"&gt;&lt;a class="external-link" href="http://www.zurb.com/playground/orbit-jquery-image-slider"&gt;Orbit&lt;/a&gt;, A Slick jQuery Image Slider Plugin&lt;/h2&gt;
&lt;h3&gt;Un plugin jQuery per un slider di immagini.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://www.zurb.com/playground/orbit-jquery-image-slider"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/orbit.png/@@images/4e0b38d4-341c-4589-8f49-ab84ca9d41b5.png" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h2 class="external-link"&gt;&lt;a class="external-link" href="http://tympanus.net/codrops/2012/06/12/css-only-responsive-layout-with-smooth-transitions/"&gt;CSS-Only Responsive Layout with Smooth Transitions&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Un layout con effetto a “scorrimento fluido” creato solamente attraverso CSS.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://tympanus.net/Tutorials/SmoothTransitionsResponsiveLayout/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/SmoothTransitionsResponsiveLayout.png/@@images/3fce5e9f-7969-4f21-8263-9872e33e254f.png" /&gt;&lt;/p&gt;
&lt;p class="p2"&gt; &lt;/p&gt;
&lt;h2 class="external-link"&gt;&lt;a class="external-link" href="http://glisse.victorcoulon.fr/"&gt;Glisse.js&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Un photo viewer jQuery, responsive e completamente personalizzabile.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://glisse.victorcoulon.fr/example-1/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/glisse2.png/@@images/d96d4820-65f3-4202-b410-01c5558681ed.png" /&gt;&lt;/p&gt;
&lt;p class="p2"&gt; &lt;/p&gt;
&lt;h2 class="external-link"&gt;&lt;a class="external-link" href="http://www.iosscripts.com/iosslider/"&gt;iosSlider&lt;/a&gt;, Touch Enabled jQuery Horizontal Slider Plugin&lt;/h2&gt;
&lt;h3&gt;Un plugin jQuery progettato per essere usato come un dispositivo di scorrimento del contenuto, un carousel, un banner di scorrimento o una galleria di immagini.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://www.iosscripts.com/iosslider/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/iosslider.png/@@images/d4bd7d87-c3e5-415d-84e7-33a6820868e1.png" /&gt;&lt;/p&gt;
&lt;p class="p3"&gt; &lt;/p&gt;
&lt;h2 class="external-link"&gt;&lt;a class="external-link" href="http://tympanus.net/codrops/2011/11/21/elastic-image-slideshow-with-thumbnail-preview/"&gt;Elastic Image Slideshow with Thumbnail Preview&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Uno slideshow "elastico" che usa miniature per le anteprime. La presentazione si regolerà automaticamente al suo contenitore.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://tympanus.net/Tutorials/ElasticSlideshow/"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/ElasticSlideshow.png/@@images/ebac87e8-7a2f-4165-bf76-403926fa6d95.png" /&gt;&lt;/p&gt;
&lt;p class="p3"&gt; &lt;/p&gt;
&lt;h2 class="p3"&gt;&lt;a class="external-link" href="http://wowslider.com/"&gt;WOW Slider&lt;/a&gt;&lt;/h2&gt;
&lt;h3&gt;Uno slider jQuery di immagini, responsive e con vari effetti di visualizzazione.&lt;/h3&gt;
&lt;p style="text-align: right; "&gt;&lt;strong&gt;&lt;a class="external-link" href="http://wowslider.com/demo.html"&gt;DEMO &amp;gt;&amp;gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="http://blog.redturtle.it/uploads/wowslider.com.png/@@images/282b0560-de26-4fb8-91b0-c16a2bc844fb.png" /&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;Come vedete, le possibilità per mostrare le vostre immagini sono davvero molte; e queste sono solo alcune delle tante proposte!&lt;/p&gt;
&lt;p&gt;Ci si potrebbe chiedere: "quale scegliere"? Ma a questa domanda non è possibile dare un risposta che vada bene per tutti. Alcuni di questi plugin richiedono funzionalità estremamente avanzate, non ancora disponibili per tutti i browser, e questo non è un aspetto che si possa trascurare. In altri casi potreste avere bisogno di una soluzione &lt;strong&gt;accessibile&lt;/strong&gt;, e allora sarà vostro compito testare l'utilizzo della tastiera.&lt;/p&gt;
&lt;p&gt;Una sola cosa credo sia chiara: le funzionalità che ad oggi &lt;strong&gt;CSS3&lt;/strong&gt; e &lt;strong&gt;HTML5&lt;/strong&gt; ci offrono, hanno reso più semplice la creazione di questi strumenti, e questo ci fa ben sperare per il futuro.&lt;/p&gt;
&lt;p&gt;Spero che abbiate trovato in uno di questi slider una soluzione alla vostra specifica esigenza!&lt;/p&gt;
&lt;p&gt;&lt;span class="discreet"&gt;La foto in testata è di &lt;a class="external-link" href="http://www.flickr.com/photos/widerbergs/"&gt;Widerbergs&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;</description>
                <author>Federica D'Elia</author>

                
                    <category>jQuery</category>
                
                
                    <category>web</category>
                
                
                    <category>plone.it</category>
                
                
                    <category>HTML5</category>
                
                
                    <category>css</category>
                

                <pubDate>Mon, 08 Apr 2013 10:15:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>PuDB, ovvero: come ho imparato a velocizzare il mio debug</title>
                <guid>http://blog.redturtle.it/2013/04/03/pudb-ovvero-come-ho-imparato-velocizzare-mio-debug</guid>
                <link>http://blog.redturtle.it/2013/04/03/pudb-ovvero-come-ho-imparato-velocizzare-mio-debug</link>
                <description>&lt;p style="float:right; "&gt;&lt;img class="image-inline" src="uploads/wtf.png/@@images/7c8b7077-5383-4f56-a234-73a3e78d2709.png" /&gt;&lt;/p&gt;
&lt;p&gt;Nella vita di ogni sviluppatore arriva il giorno in cui si incrocia la propria tastiera con codice incomprensibile, dai risultati inspiegabili e che, ovviamente, bisogna correggere. Avere gli &lt;strong&gt;strumenti adatti per il debugging&lt;/strong&gt; è fondamentale.&lt;/p&gt;
&lt;p&gt;Come programmatore python ho avuto modo di utilizzare diversi tipi di debugger, dal semplice pdb a una versione più completa: &lt;a class="external-link" href="https://pypi.python.org/pypi/pdbpp/"&gt;&lt;strong&gt;pdb++&lt;/strong&gt;&lt;/a&gt;. Esistono debugger integrati nei vari IDE di sviluppo, di cui però non ho mai approfondito troppo l'uso dal momento che li ho sempre trovato ambienti un po' pesanti. Da amante della shell, divido il mio tempo di sviluppo fra vim e un editor di testo molto semplice come &lt;a class="external-link" href="http://www.sublimetext.com/"&gt;&lt;strong&gt;sublime&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;Ed è da amante della shell che sono rimasto piacevolmente colpito da un debugger di cui non conoscevo l'esistenza, e di cui mi ha raccontato qualche giorno fa un uccellino azzurro: &lt;a class="external-link" href="https://pypi.python.org/pypi/pudb"&gt;&lt;strong&gt;puDB&lt;/strong&gt;&lt;/a&gt;!&lt;/div&gt;
&lt;p&gt;PuDB è un debugger visuale basato su &lt;strong&gt;&lt;a class="external-link" href="https://pypi.python.org/pypi/urwid"&gt;Urwid&lt;/a&gt;&lt;/strong&gt;. Quando ho visto la sua prima immagine ho pensato che fosse qualcosa per nostalgici: sono riaffiorati parecchi ricordi delle schermate che mi hanno accompagnato quando muovevo i primi passi con TurboPascal.&lt;/p&gt;
&lt;p&gt;Ma questo effetto &lt;a class="external-link" href="http://it.wikipedia.org/wiki/Stile_retr%C3%B2"&gt;&lt;strong&gt;retrò&lt;/strong&gt;&lt;/a&gt; è passato rapidamente in secondo piano: mi sono reso conto di avere sotto mano &lt;strong&gt;tutto quello che mi serviva per debuggare il problema su cui stavo lavorando&lt;/strong&gt;.&lt;/p&gt;
&lt;h2&gt;Installazione e uso&lt;/h2&gt;
&lt;p&gt;L'installazione è semplice: è necessario utilizzare un interprete che vada almeno dalla versione 2.4 in poi, dopodiché, che si usi buildout, easy_install o pip per l'installazione è indifferente e in un attimo si è pronti all'uso del pacchetto; nel codice che si vuole debuggare basta inserire:&lt;/p&gt;
&lt;p class="callout"&gt;import &lt;strong&gt;pudb&lt;/strong&gt;;&lt;strong&gt;pudb&lt;/strong&gt;.set_trace()&lt;/p&gt;
&lt;p&gt;e al momento dell'esecuzione, in shell ci si trova nel debugger:&lt;/p&gt;
&lt;p&gt;&lt;img class="image-inline" src="uploads/pudb.png/@@images/c36746db-0a5c-4e45-b213-802cb5bad61a.png" /&gt;&lt;/p&gt;
&lt;p&gt;Una sola immagine è già in grado di mostrare che si ha molto per le mani: un'intera pagina di codice sulla sinistra e 3 box sulla destra - il primo con le variabili dello scope, il secondo in cui viene mostrato lo stack e il terzo in cui si trova la lista dei breakpoint.&lt;/p&gt;
&lt;h2&gt;Caratteristiche principali&lt;/h2&gt;
&lt;p&gt;Il funzionamento base è come quello del pdb: &lt;strong&gt;'n'&lt;/strong&gt; per proseguire nel debug, &lt;strong&gt;'s'&lt;/strong&gt; per entrare in un metodo e così via. Ma vediamo quali sono le caratteristiche principali di questo debugger e perché, secondo me, rende più veloce il debug.&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;Navigazione da tastiera tramite le frecce o Shift+[V/S/B] per passare ai box di variabili, stack e breakpoint&lt;/blockquote&gt;
&lt;p&gt;Prima di tutto, abbiamo un'ottima navigazione da tastiera: per chi è abituato a vim, si tratta di ricordare qualche combinazione o tasto in più, ma una volta memorizzati i comandi principali si va veramente veloci. Per una lista di tutti i comandi, si può fare riferimento alla guida inserita nel debugger stesso, attivabile premendo &lt;strong&gt;'SHIFT+?'&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;In secondo luogo, si vede una porzione molto ampia di codice; non è una regola, ma cerco di scrivere metodi non troppo lunghi (dove possibile) e con puDB diventa facile visualizzare l'intero metodo di cui si sta facendo debug.&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;Visualizzazione differenziata per le variabili (tipo, repr, str) ed espandibile nel caso di variabili complesse&lt;/blockquote&gt;
&lt;p&gt;Altra caratteristica che reputo importantissima (assieme alla visione completa del codice) è la presenza nei box di destra di tutte le variabili che vengono definite nello scope e aggiornate durante l'esecuzione. Quello che preferisco è il fatto che si possa agire in diversi modi sulle variabili: in caso di variabili complesse, queste si possano espandere come vediamo nell'immagine sotto (premendo &lt;strong&gt;'\'&lt;/strong&gt;):&lt;/p&gt;
&lt;p style="text-align: center; "&gt;&lt;img src="http://blog.redturtle.it/uploads/variables.png" style="text-align: center; " title="" class="image-inline" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Inoltre si può scegliere il tipo di visualizzazione per ogni singola variabile, mostrandola per tipo (&lt;strong&gt;'t'&lt;/strong&gt;), mostrandone la __repr__ (&lt;strong&gt;'r'&lt;/strong&gt;), la __str__ (&lt;strong&gt;'s'&lt;/strong&gt;) oppure utilizzando una rappresentazione personalizzata (&lt;strong&gt;'c'&lt;/strong&gt;).&lt;/p&gt;
&lt;blockquote class="pullquote"&gt;Stack delle chiamate navigabile&lt;/blockquote&gt;
&lt;p&gt;Per quello che riguarda lo stack, la possibilità di scorrerlo e di navigare nei metodi elencati al suo interno è molto utile, dal momento che si è in grado (senza dover aprire altre finestre o senza riavviare la sessione di debug) di visualizzare il codice chiamante dei metodi che stiamo analizzando. Una volta entrati in un altro metodo dello stack, cambierà lo scope e anche le variabili visualizzate saranno aggiornate; l'esecuzione del debug riprenderà da quel nuovo punto.&lt;/p&gt;
&lt;p&gt;Ovviamente, nel caso fosse necessario utilizzare la linea di comando, la possibilità c'è: è sufficiente premere &lt;strong&gt;'!'&lt;/strong&gt; per fare switch su una shell python contestualizzata nello scope corrente ('&lt;strong&gt;Ctrl-d'&lt;/strong&gt; per uscirne).&lt;/p&gt;
&lt;p&gt;Non c'è molto altro da aggiungere; la cosa migliore da fare è mettersi alla tastiera e iniziare a utilizzare questo debugger!&lt;/p&gt;
&lt;p&gt;&lt;span class="discreet"&gt;Immagine nel body: &lt;a href="http://www.flickr.com/photos/smitty/2245445147/"&gt;http://www.flickr.com/photos/smitty/2245445147/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="discreet"&gt;Immagine in testata: &lt;/span&gt;&lt;a href="http://www.flickr.com/photos/28208534@N07/4047355843"&gt;http://www.flickr.com/photos/28208534@N07/4047355843&lt;/a&gt;&lt;/p&gt;</description>
                <author>Luca Bellenghi</author>

                
                    <category>python</category>
                
                
                    <category>tutorials</category>
                

                <pubDate>Wed, 03 Apr 2013 10:50:00 +0200</pubDate>

                
            </item>
        
        
            <item>
                <title>Mi piacciono le bagigie</title>
                <guid>http://blog.redturtle.it/2013/03/28/mi-piacciono-le-bagigie</guid>
                <link>http://blog.redturtle.it/2013/03/28/mi-piacciono-le-bagigie</link>
                <description>&lt;p&gt;&lt;img src="http://blog.redturtle.it/uploads/copy_of_alebagigiesq.jpg" alt="" class="image-left" title="" /&gt;Dopo aver ultimato il mio ultimo post, in cui &lt;a class="external-link" href="http://blog.redturtle.it/2013/02/25/migrating-dexterity-items-to-dexterity-containers"&gt;facevo il bullo con &lt;strong&gt;dexterity&lt;/strong&gt;&lt;/a&gt;, ho inviato ai temibili revisori del nostro blog una mail dal soggetto &lt;i&gt;"Mi piacciono le bagigie"&lt;/i&gt;.&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;Questo il contenuto della missiva.&lt;/div&gt;
&lt;p class="callout"&gt;Ciao,    ho sottomesso per la pubblicazione questo post:&lt;br /&gt; - &lt;a class="external-link" href="http://blog.redturtle.it/migrating-dexterity-items-to-dexterity-containers"&gt;http://blog.redturtle.it/migrating-dexterity-items-to-dexterity-containers&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Vi avviso che è di una noia mortale: già dopo 10 righe capirete che è un'impresa inutile andare avanti. Chi di voi desiderasse avventurarsi oltre sappia che rischia di essere preda di attacchi convulsivi da far invidia a quelli del principe Myskin.&lt;br /&gt;Però, secondo me, l'argomento è interessante e mi permette di confrontarmi con i guru di Plone.&lt;br /&gt;&lt;br /&gt;Giuro che la prossima volta:&lt;br /&gt; - scrivo in itagliano scorrente&lt;br /&gt; - scrivo di &lt;span class="il"&gt;bagigie&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mi sono impegnato molto nel tentare di non subire le dure stoccate di te, cara signorina social: spero di aver fatto tutto a dovere (immagini, page break, numero caratteri, doccia e bidet).&lt;br /&gt;&lt;br /&gt;Ciao!&lt;br /&gt;&lt;br /&gt;P.s.: il prossimo blog post sarà un copia incolla di questa mail.&lt;/p&gt;
&lt;p&gt;Tutto potrebbe finire qui, ma voglio rivelarvi alcuni dei &lt;strong&gt;terribili e &lt;strong&gt;inconfessabili &lt;strong&gt;segreti&lt;/strong&gt;&lt;/strong&gt;&lt;/strong&gt; che si celano dietro le righe dei nostri allegri post.&lt;/p&gt;
&lt;p&gt;Innanzi tutto, il fatto stesso che ci siano dei revisori è un indice di come le vostre tartarughe preferite &lt;strong&gt;non lascino nulla al caso&lt;/strong&gt;. Ben sapendo quanto sia importante il &lt;strong&gt;social media marketing&lt;/strong&gt;, abbiamo costituito al nostro interno una &lt;strong&gt;task force&lt;/strong&gt; che si occupa di curare la nostra (e quella dei nostri clienti) &lt;strong&gt;presenza sul web&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.redturtle.it/uploads/Alien_Tourist_by_madart84.jpg/@@images/deca5ae0-39fc-42fe-bb31-484fce02c5d7.jpeg" alt="" class="image-left" title="" /&gt;Questi &lt;i&gt;"mostri spaziali"&lt;/i&gt;, come dicevo nell'abstract, si assicurano che chi realizza i vostri siti non si limiti a &lt;strong&gt;destreggiarsi nelle nuvole di bit&lt;/strong&gt;, ma si conceda saltuariamente divagazioni letterarie, impreziosendo il proprio lavoro con pregevoli citazioni allo stupendo principe Myskin, protagonista dell'&lt;a class="external-link" href="http://it.wikipedia.org/wiki/L'idiota_(Dostoevskij)"&gt;Idiota&lt;/a&gt; di Dostoevskij.&lt;/p&gt;
&lt;p&gt;Dietro a questi nobili intenti si celano retroscena raccapriccianti. Funziona così: a intervalli regolari una &lt;strong&gt;tartaruga ignara&lt;/strong&gt; viene presa, incappucciata e tratta in una cantina buia dove deve redigere in un minuto e mezzo un blog post.&lt;/p&gt;
&lt;p&gt;Gli argomenti dei post sono in gran parte lasciati alla buona volontà degli autori, i quali cominciano a sudare freddo, ben sapendo che se sbaglieranno tema i loro carapaci verranno segnati per la vita con fruste infuocate.&lt;/p&gt;
&lt;p&gt;Stante il fatto che questo è il blog di un'azienda che "lavora il web", ovviamente non è sensato parlare di &lt;strong&gt;bagigie&lt;/strong&gt; (ovviamente!), ma è anche meglio evitare contenuti troppo tecnici. Purtoppo, avendo trasgredito l'ultima volta scrivendo un post iper tecnico, sono stato costretto a cadere nell'estremo opposto scrivendo di &lt;strong&gt;bagigie&lt;/strong&gt;&lt;strong&gt;, &lt;/strong&gt;&lt;strong&gt;operazione che mi causerà una&lt;/strong&gt;&lt;strong&gt; &lt;/strong&gt;&lt;strong&gt;doppia razione di scudiscio&lt;/strong&gt;&lt;strong&gt;. &lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Dopo che il tema del post è stato considerato meritevole di pubblicazione, la povera tartaruga è ben consapevole di dover ornare il suo post con immagini, frasi e metadati destinati all'&lt;strong&gt;integrazione con i social network&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Per esempio ogni post ha una immagine in testata, che vedete sulla pagina del post, ma ha anche un'immagine (più squadrata) dedicata a &lt;strong&gt;Facebook&lt;/strong&gt;. Anche le lunghezze dei testi sono studiate per integrarsi al meglio con i social network, ad esempio &lt;strong&gt;Twitter&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Deputata a sincerarsi che tutte queste accortezze siano rispettate e che i nostri articoli siano comprensibili e scritti in &lt;i&gt;"itagliano scorrente"&lt;/i&gt;, è la figura oscura della &lt;i&gt;"signorina social"&lt;/i&gt;. Nessuno sa veramente chi sia e se esista per davvero, ma si vocifera che si aggiri nella notte a caccia di errori di ortografia, causando ai loro autori la morte tra atroci sofferenze.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;img src="http://blog.redturtle.it/uploads/Galapagos_Turtle_skeleton.jpg/@@images/0bd428fc-1aa8-44da-8fda-4a85fc40b922.jpeg" alt="" class="image-right" title="" /&gt;Se&lt;/strong&gt; la tartaruga &lt;strong&gt;sopravvive&lt;/strong&gt; a tutto questo, il suo post viene pubblicato e può tornare a programmare alla sua scrivania (sempre che qualche &lt;strong&gt;sciacallo&lt;/strong&gt; nel frattempo non abbia saccheggiato il saccheggiabile).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Gioite&lt;/strong&gt; quindi, adorati lettori, alla vista di un nuovo post su questo blog: finché i vostri occhi leggeranno le nostre parole, noi saremo in vita. E soprattutto &lt;strong&gt;condividete&lt;/strong&gt; la vostra gioia con il mondo: cinguettateci, piaceteci, incrementateci, pinteressatevi di noi!&lt;/p&gt;
&lt;p&gt;A presto! (forse...)&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span class="discreet"&gt;Originale immagine in testata: &lt;a href="http://www.flickr.com/photos/teresahsu/6410106143/sizes/l/in/photostream/"&gt;http://www.flickr.com/photos/teresahsu/6410106143/sizes/l/in/photostream/&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="discreet"&gt;Scheletro tartaruga: &lt;a href="http://upload.wikimedia.org/wikipedia/commons/9/9a/Galapagos_Turtle_skeleton.jpg"&gt;http://upload.wikimedia.org/wikipedia/commons/9/9a/Galapagos_Turtle_skeleton.jpg&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class="discreet"&gt;Cesare in vacanza: &lt;a href="http://fc06.deviantart.net/fs8/i/2005/314/6/7/Alien_Tourist_by_madart84.jpg"&gt;http://fc06.deviantart.net/fs8/i/2005/314/6/7/Alien_Tourist_by_madart84.jpg&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;strong&gt;P.s&lt;/strong&gt;: i bottoni per cinguettarci, piacerci, incrementarci, pinteressarci sono là sopra!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.p.s&lt;/strong&gt;: chi mi ha fregato la sedia intanto che ero via?&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.p.p.s&lt;/strong&gt;: Il mio preferito è Woodstock&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;P.p.p.p.s&lt;/strong&gt;: Grazie a &lt;a href="http://blog.redturtle.it/authors/andrea" class="external-link"&gt;Baio&lt;/a&gt; per il suggerimento degli Skiantos e a &lt;a href="http://blog.redturtle.it/authors/andreacecchi" class="external-link"&gt;Cekk&lt;/a&gt; per la foto imbagigiata&lt;/p&gt;
&lt;p&gt;________&lt;/p&gt;
&lt;p&gt;&lt;i&gt;&lt;strong&gt;Visto, approvato e pubblicato dalla "signorina social" in data odierna, con 3 tratti di matita rossa soltanto.&lt;/strong&gt;&lt;/i&gt;&lt;/p&gt;</description>
                <author>Alessandro Pisa</author>

                
                    <category>web</category>
                
                
                    <category>Facebook</category>
                
                
                    <category>plone.it</category>
                

                <pubDate>Thu, 28 Mar 2013 09:00:00 +0100</pubDate>

                
            </item>
        
        
            <item>
                <title>Funkload: a simple buildout to spread and run your test!</title>
                <guid>http://blog.redturtle.it/2013/03/26/funkload-simple-buildout-to-run-your-test</guid>
                <link>http://blog.redturtle.it/2013/03/26/funkload-simple-buildout-to-run-your-test</link>
                <description>&lt;p&gt;Recently we faced a performance issue on a &lt;strong&gt;Plone &lt;/strong&gt;site, which has been reported to be slower than expected.&lt;/p&gt;
&lt;p&gt;The application, after a migration to a new hardware, has shown to be a bit lazy compared to the expectations.&lt;/p&gt;
&lt;p&gt;Because of the weird behaviour and confident on our &lt;strong&gt;Plone &lt;/strong&gt;installation, we assumed a hardware misconfiguration.&lt;br /&gt; But without evidence (numbers in this case), a claim is merely an opinion.&lt;/p&gt;
&lt;p&gt;So, to get ride of the problem, we decided to perform multiple load test on different servers, and then compare the results.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;The easiest and fast way to get the job done has been achieved with a simple &lt;i&gt;buildout&lt;/i&gt; used to spread &lt;strong&gt;Funkload&lt;/strong&gt; on many other servers with the same hardware requirements, each one running a Plone site clone. Of course, in order to compare the performance, every server has to meet the same hardware requirements.&lt;/div&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h3&gt;Funkload&lt;/h3&gt;
&lt;div&gt;&lt;a class="external-link" href="http://funkload.nuxeo.org/"&gt;Funkload&lt;/a&gt; is a powerful functional and load web tester, easy to install and well documented. I'm not going deep on details of all its functionality in this post, because in our case the two standard commands &lt;strong&gt;fl-run-bench&lt;/strong&gt; and &lt;strong&gt;fl-build-report&lt;/strong&gt; have been enough for the purpose, but if you are interested there are many guides online that can help you:&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href="http://funkload.nuxeo.org/"&gt;http://funkload.nuxeo.org/&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://funkload.nuxeo.org/"&gt;&lt;/a&gt;&lt;a href="http://ziade.org/2011/07/27/how-to-stress-test-your-app-using-funkload-part-1/"&gt;http://ziade.org/2011/07/27/how-to-stress-test-your-app-using-funkload-part-1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So, let's see how to set a Funkload test within a &lt;i&gt;buildout.&lt;/i&gt;&lt;/p&gt;
&lt;div&gt;As usual the starting point is the &lt;a class="external-link" href="https://pypi.python.org/pypi/virtualenv"&gt;virtualenv&lt;/a&gt; environment:&lt;/div&gt;
&lt;pre&gt;git clone https://github.com/nicolasenno/funkload.buildout
cd funkload.buildout&lt;br /&gt;virtualenv --no-site-packages .&lt;br /&gt;. bin/activate
&lt;/pre&gt;
&lt;p&gt;Then the buildout.cfg (&lt;a class="external-link" href="https://github.com/nicolasenno/funkload.buildout"&gt;download&lt;/a&gt; from github):&lt;/p&gt;
&lt;div&gt;&lt;/div&gt;
&lt;pre&gt;[buildout]
parts = 
    bench-tools
    gnuplot
    versions = versions&lt;br /&gt;
[bench-tools]
recipe = zc.recipe.egg:scripts
eggs =
    docutils
    funkload 
    tcpwatch
initialization =
import os
os.environ['TCPWATCH'] = "${buildout:bin-directory}/tcpwatch"

[gnuplot]
recipe = zc.recipe.cmmi
url = http://sourceforge.net/projects/gnuplot/files/gnuplot/4.6.2/gnuplot-4.6.2.tar.gz/download
configure-options = --bindir=${buildout:directory}/bin&lt;br /&gt;
[versions]
funkload = 1.16.1&lt;br /&gt; &lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Gnuplot&lt;/strong&gt; can be installed directly from buildout, as suggested by  Alessandro Pisa on his &lt;a class="external-link" href="http://blog.redturtle.it/fix-funkload-report-generation-problems-by-upgrading-gnuplot"&gt;blog post.&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;Finally, once Funkload is ready, we can create a test:&lt;/div&gt;
&lt;pre&gt;import unittest
from random import random
from funkload.FunkLoadTestCase import FunkLoadTestCase

PAGES = (('Homepage', ''),
         ('path1', 'contacts'),
         ('path2', 'media'),
         )

class Site(FunkLoadTestCase):
    """This test use a configuration file Site.conf."""

    def setUp(self):
        """Setting up test."""
        self.server_url = self.conf_get('main', 'url')

    def test_app(self):
        ''' site path
        '''
        server_url = self.server_url

        for title, page in PAGES:
            url = "/".join((server_url, page))
            self.get(url, description='Get %s' % title)
&lt;/pre&gt;
&lt;p&gt;Then we can use a Makefile to automate the launch process:&lt;/p&gt;
&lt;pre&gt;LOG_HOME := var/funkload/log
REPORT_HOME := var/funkload/data

ifdef URL
    FLOPS = -u $(URL) $(EXT)
else
    FLOPS = $(EXT)
endif

ifdef REPORT_HOME
    REPORT = $(REPORT_HOME)
else
    REPORT = report
endif

all: test

test: start test-app

bench: start bench-app

start:
    mkdir -p $(REPORT)  $(LOG_HOME)

test-app:
    fl-run-test -d --debug-level=3 --simple-fetch site_test.py Site.test_app $(FLOPS)

bench-app:
    fl-run-bench --simple-fetch site_test.py Site.test_app -c 1:5:10:15:20:30:40:50 -D 45 -m 0.1 -M .5 -s 1 $(FLOPS)
    fl-build-report $(LOG_HOME)/site-bench.xml --html -o $(REPORT)

clean:&lt;/pre&gt;
&lt;p&gt;If you prefer, as an improvement, you can generate this file within the &lt;i&gt;buildout&lt;/i&gt; itself.&lt;br /&gt;Take a look to &lt;a class="external-link" href="https://pypi.python.org/pypi/collective.recipe.template"&gt;collective.recipe.template&lt;/a&gt; for more information.&lt;/p&gt;
&lt;p&gt;Here we are!&lt;br /&gt; A couple of shell commands and you will be ready to run the test.&lt;/p&gt;
&lt;p&gt;From your &lt;i&gt;buildout&lt;/i&gt; directory, type:&lt;/p&gt;
&lt;pre&gt;make test
make test URL=http://override-url/
make bench
&lt;/pre&gt;
&lt;p&gt;At this point a full report will be ready in "{buildout dir}/var/funkload/data" (path depends on your configuration).&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;As you can see install and run a &lt;strong&gt;Funkload&lt;/strong&gt; load test it's just matter of few steps. &lt;br /&gt; Thanks to it, we have been able to prove our thesis with numbers.&lt;/p&gt;
&lt;p&gt;I think it's not a bad idea add it into my checklist of things to do for every site deployment. It could become useful in many other cases.&lt;/p&gt;
&lt;h3&gt;Recommended reading&lt;/h3&gt;
&lt;p&gt;&lt;a href="http://blog.redturtle.it/how-to-write-funkload-test-in-few-minutes"&gt;http://blog.redturtle.it/how-to-write-funkload-test-in-few-minutes&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.martinaspeli.net/articles/tools-for-a-successful-plone-project"&gt;http://www.martinaspeli.net/articles/tools-for-a-successful-plone-project&lt;/a&gt;&lt;/p&gt;</description>
                <author>Nicola Senno</author>

                
                    <category>web</category>
                
                
                    <category>funkload</category>
                
                
                    <category>Monitoring</category>
                
                
                    <category>python</category>
                
                
                    <category>Plone</category>
                

                <pubDate>Tue, 26 Mar 2013 09:10:00 +0100</pubDate>

                
            </item>
        
        
            <item>
                <title>rt.atmigrator: pensioniamo i vecchi tipi con un click</title>
                <guid>http://blog.redturtle.it/2013/03/20/rt.atmigrator-pensioniamo-vecchi-tipi-con-un-click</guid>
                <link>http://blog.redturtle.it/2013/03/20/rt.atmigrator-pensioniamo-vecchi-tipi-con-un-click</link>
                <description>&lt;blockquote class="pullquote"&gt;Di cosa potrei parlare? Cosa ho fatto ultimamente di interessante da poter condividere?&lt;/blockquote&gt;
&lt;p&gt;Quando sto per scrivere un nuovo post per il blog, il problema è sempre il solito: trovare un argomento interessante da proporre.&lt;/p&gt;
&lt;p&gt;Sfortunatamente per voi, la risposta è sempre la stessa: &lt;strong&gt;migrazioni!&lt;/strong&gt;&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;Ormai le migrazioni sono diventate il mio pane quotidiano. Il lavoro dell'ultimo anno è stato prevalentemente quello di prendere per mano &lt;strong&gt;vecchi e appesantiti portali Plone&lt;/strong&gt; e dargli nuova vita &lt;strong&gt;migrandoli alla versione più aggiornata&lt;/strong&gt;.&lt;/div&gt;
&lt;p&gt;Come già detto in un precedente &lt;a href="http://blog.redturtle.it/content-type-products-contentmigration" class="internal-link"&gt;articolo&lt;/a&gt;, spesso le migrazioni sono anche il momento ideale in cui fare un'analisi del portale e individuare eventuali &lt;strong&gt;archetypes creati ad hoc&lt;/strong&gt; che, col tempo, sono &lt;strong&gt;diventati inutili o addirittura da eliminare&lt;/strong&gt;, perché mai utilizzati correttamente.&lt;/p&gt;
&lt;p&gt;&lt;img src="http://blog.redturtle.it/topic_images/recycle_logo.gif/@@images/dfcdee5f-a6c5-429b-979c-93a4cf9672dd.jpeg" alt="recycle" class="image-right" title="recycle" /&gt;Se quei contenuti li vogliamo proprio eliminare, li cancelliamo direttamente dal portale e non ci si pensa più.&lt;br /&gt;Discorso diverso, invece, se questi vanno &lt;strong&gt;mantenuti e&lt;/strong&gt; magari &lt;strong&gt;"&lt;i&gt;convertiti&lt;/i&gt;" in qualcosa di più standard&lt;/strong&gt;, come ad esempio i contenuti base di Plone.&lt;/p&gt;
&lt;p&gt;Ultimamente ho dovuto pensare proprio a come migrare 4-5 vecchi Archetypes ormai inutilizzati e farli diventare dei tipi base di Plone (Cartelle, Pagine ed Eventi).&lt;/p&gt;
&lt;p&gt;La prima idea è stata quella di creare una serie di procedure come descritto nell'articolo di cui parlavo prima, ma poi mi sono chiesto se non esistesse un modo per rendere parametrizzabile questa operazione senza dover scrivere ogni volta 200 metodi uguali.&lt;/p&gt;
&lt;p&gt;Visto che la migrazione che mi interessava era molto base e non avevo bisogno di eseguire nessuna operazione intermedia, ho deciso di creare un piccolo prodottino che mi aiutasse: &lt;a class="external-link" href="https://pypi.python.org/pypi/rt.atmigrator"&gt;rt.atmigrator&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si tratta di un pacchetto che &lt;strong&gt;va inserito nel buildout e non ha bisogno di essere installato&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Fornisce una semplice vista (&lt;i&gt;http://url-del-sito/@@migrate-types&lt;/i&gt;) che non fa altro che chiedere all'utente 2 cose:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Il &lt;strong&gt;tipo di partenza&lt;/strong&gt; (selezionabile tra i tipi aggiungibili nel portale)&lt;/li&gt;
&lt;li&gt;Il &lt;strong&gt;tipo di destinazione&lt;/strong&gt; (selezionabile tra i tipi aggiungibili nel portale).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="http://blog.redturtle.it/topic_images/atmigrator.png" alt="atmigrator" class="image-inline" title="atmigrator" /&gt;&lt;/p&gt;
&lt;p&gt;Una volta confermato, viene lanciato un metodo come quelli già descritti, che esegue la migrazione con &lt;a class="external-link" href="https://pypi.python.org/pypi/Products.contentmigration"&gt;Products.contentmigration&lt;/a&gt; utilizzando come parametri i 2 tipi impostati nel form.&lt;/p&gt;
&lt;p&gt;Completata la migrazione, &lt;strong&gt;nel log c'è una descrizione completa delle operazioni svolte&lt;/strong&gt; (ed eventualmente il traceback degli errori) e l'utente viene informato di quanti elementi sono stati aggiornati.&lt;/p&gt;
&lt;p&gt;Il prodotto di per sé è molto semplice, dato che esegue una migrazione base da un tipo ad un altro.&lt;br /&gt;Nulla vieta però di prevedere, in futuro, anche delle evoluzioni e supportare, ad esempio, una gestione di filtri per determinare i contenuti da migrare (oltre al solo tipo, magari anche un percorso o lo stato di pubblicazione), oppure delle operazioni pre e post migrazione per determinati tipi.&lt;/p&gt;
&lt;p&gt;Il sorgente è disponibile su &lt;a class="external-link" href="https://github.com/RedTurtle/rt.atmigrator"&gt;github&lt;/a&gt;, quindi si può consultare ed eventualmente modificare in un attimo.&lt;/p&gt;</description>
                <author>Andrea Cecchi</author>

                
                    <category>migration</category>
                
                
                    <category>Archetypes</category>
                
                
                    <category>Plone</category>
                

                <pubDate>Wed, 20 Mar 2013 09:00:00 +0100</pubDate>

                
            </item>
        
        
            <item>
                <title>sternweber.it, il nuovo sito 100% Plone</title>
                <guid>http://blog.redturtle.it/2013/03/15/sternweber-il-nuovo-portale-plone</guid>
                <link>http://blog.redturtle.it/2013/03/15/sternweber-il-nuovo-portale-plone</link>
                <description>&lt;p&gt;&lt;a class="external-link" href="http://www.sternweber.it/" target="_blank"&gt;&lt;strong&gt;Stern Weber&lt;/strong&gt;&lt;/a&gt;, leader nella produzione di riuniti dentali, rinnova la vetrina dei prodotti con un &lt;strong&gt;nuovo portale&lt;/strong&gt;: un cuore di delizioso &lt;strong&gt;&lt;a class="external-link" href="http://plone.it/" target="_blank"&gt;Plone&lt;/a&gt;&lt;/strong&gt; al latte racchiuso in un tenero guscio di &lt;strong&gt;&lt;a class="external-link" href="http://docs.diazo.org/en/latest/index.html" target="_blank"&gt;Diazo&lt;/a&gt;&lt;/strong&gt; extra-fondente. &lt;br /&gt;Il connubio Plone-Diazo è poi completato da una croccante nocciolina di &lt;strong&gt;&lt;a class="external-link" href="http://twitter.github.com/bootstrap/index.html" target="_blank"&gt;Bootstrap&lt;/a&gt;&lt;/strong&gt; che lo rende ancora più invitante.&lt;/p&gt;
&lt;a name="anchor-breaktext"&gt;&lt;/a&gt;&lt;div class="breakText"&gt;&lt;/div&gt;&lt;p style="text-align: center; "&gt;&lt;img src="http://blog.redturtle.it/topic_images/stern-weber-diazo-in-azione/@@images/b702514a-d3f4-41c7-a414-cf88c5352e20.jpeg" alt="Stern Weber, diazo in azione" class="image-inline" title="Stern Weber, diazo in azione" /&gt;&lt;/p&gt;
&lt;h3&gt;Perché Bootstrap?&lt;/h3&gt;
&lt;p&gt;Perché fornisce una solida base di partenza per il templating, dispone di una vasta scelta di effetti javascript integrati, rende più semplice l'approccio al &lt;i&gt;responsive&lt;/i&gt; (adattare la visualizzazione alle diverse risoluzioni) e, se usato nella versione sorgente, permette la &lt;strong&gt;massima personalizzazione&lt;/strong&gt; grazie a &lt;strong&gt;&lt;a class="external-link" href="http://lesscss.org/" target="_blank"&gt;Less&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h4&gt;&lt;img src="http://blog.redturtle.it/topic_images/screencapture1.png/@@images/a0a089f1-d746-42e4-9651-9cdd02756147.png" alt="Stern Weber, i file" class="image-right" title="Stern Weber, i file" /&gt;Le dosi&lt;/h4&gt;
&lt;p&gt;Per avere la giusta lievitazione dell'impasto è necessario includere tutti i sorgenti di Bootstrap senza modifiche: si potrà in futuro aggiornarli alle ultime versioni disponibili senza correre il rischio di perdere le proprie personalizzazioni.&lt;/p&gt;
&lt;p&gt;Nel file "&lt;i&gt;core&lt;/i&gt;" del progetto (nel mio caso &lt;i&gt;sternweber.less&lt;/i&gt;) sarà sufficiente iniziare con:&lt;/p&gt;
&lt;pre style="width: auto;"&gt;@import "../bootstrap/less/bootstrap.less";&lt;/pre&gt;
&lt;p&gt;&lt;i&gt;bootstrap.less&lt;/i&gt; includerà a sua volta tutti i file originali del framework.&lt;/p&gt;
&lt;p&gt;Si procede poi ad amalgamare gli ingredienti aggiungendo:&lt;/p&gt;
&lt;pre style="width: auto;"&gt;@import "variables.less"; &lt;br /&gt;@import "mixins.less"; &lt;br /&gt;@import "plonemixins.less";&lt;/pre&gt;
&lt;p&gt;dove&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;i&gt;variable.less&lt;/i&gt;&lt;/strong&gt; permette non solo di dichiarare le proprie variabili ma anche di ridefinire quelle di Bootstrap (colori, font, dimensioni, ...) &lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;i&gt;mixins.less&lt;/i&gt;&lt;/strong&gt; aggiunge alcune utilissime funzioni a quelle già presenti in &lt;i&gt;../bootstrap/less/mixins.less&lt;/i&gt;: se siete frontend developer e non avete mai provato Less o &lt;a class="external-link" href="http://sass-lang.com/" target="_blank"&gt;Sass&lt;/a&gt; allora... sorridete! Siete su &lt;i&gt;Cucine da incubo&lt;/i&gt; ;-)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;i&gt;plonemixins.less&lt;/i&gt;&lt;/strong&gt;, per la gestione di alcune parti di html specifiche sfornate da Plone, mi è stato saggiamente consigliato da &lt;a class="external-link" href="https://twitter.com/mishunov" target="_blank"&gt;Denys&lt;/a&gt; in occasione dei &lt;a href="http://blog.redturtle.it/traning-with-jarn-much-more-than-training" class="internal-link"&gt;training 2012&lt;/a&gt;: posso dire senza sbagliare che è stato il &lt;i&gt;&lt;a class="external-link" href="http://it.wikipedia.org/wiki/Gordon_Ramsay" target="_blank"&gt;Gordon Ramsey&lt;/a&gt;&lt;/i&gt; della situazione!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tutto il resto è olio di gomito e una lenta cottura alla giusta temperatura.&lt;/p&gt;
&lt;h3&gt;Perché Diazo?&lt;/h3&gt;
&lt;p&gt;&lt;img src="http://blog.redturtle.it/topic_images/stern-weber-dettaglio-prodotto/@@images/94a0bbd1-dbea-4db5-9160-fde9696b49e6.png" alt="Stern Weber, dettaglio prodotto" class="image-right" title="Stern Weber, dettaglio prodotto" /&gt;Per avere tanta &lt;strong&gt;autonomia e flessibilità in frontend&lt;/strong&gt; quanto Plone la permette nel backend. I gestori del sito hanno largamente apprezzato i vantaggi di un'area redazionale semplice, leggera e veloce e non hanno trovato limitante verificare la resa grafica delle pagine in un frontend separato.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a class="external-link" href="http://docs.diazo.org/en/latest/index.html" target="_blank"&gt;Diazo&lt;/a&gt;&lt;/strong&gt;, ormai integrato nelle ultime versioni del &lt;i&gt;CMS pythonico&lt;/i&gt;, può fare la differenza tra un'ottima ciambella ricoperta di zucchero a velo e una torta da competizione come solo &lt;i&gt;&lt;a class="external-link" href="http://it.wikipedia.org/wiki/Il_boss_delle_torte" target="_blank"&gt;Buddy&lt;/a&gt;&lt;/i&gt; sa sfornare: alzi la mano il web designer a cui non sia mai stato chiesto "vorrei una torta multistrato, a più piani, magari a forma di brontosauro ma devi arrangiarti con uno stampo tondo con il buco"!&lt;/p&gt;
&lt;h3&gt;Perché Plone?&lt;/h3&gt;
&lt;p&gt;Ma dai... è una cosa da chiedere? ;-)&lt;/p&gt;
&lt;p class="discreet"&gt;&lt;a href="http://www.flickr.com/photos/vanchett/3168757904/" target="_blank"&gt;Credits photo&lt;/a&gt;&lt;/p&gt;</description>
                <author>Irene Capatti</author>

                
                    <category>web</category>
                
                
                    <category>Diazo</category>
                
                
                    <category>Plone 4</category>
                

                <pubDate>Fri, 15 Mar 2013 10:00:00 +0100</pubDate>

                
            </item>
        

    </channel>
</rss>


