SlideShare una empresa de Scribd logo
1 de 48
Descargar para leer sin conexión
Combinación ganadora: 
    Plone y tu framework favorito
                   
Charla basada
        en un trabajo
    de Carlos de la Guardia
      http://us.pycon.org/2009/conference/schedule/event/85/


                                
Ustedes ?

        
menttes

        
     
Por qué ?

         
Plone es el mejor CMS
NO desarrollado en PHP
Plone tiene muchas prestaciones
●   Fácil de usar e instalar 
●   Cumple con estandares, incluyendo 
    accesibilidad
●   Mejor registro de seguridad entre los CMSs 
    mas populares
●   Disponible en mas de 40 lenguajes
●   Motor de workflow y reglas
●   Versionado: historial y revertir cambios 
●   y por supuesto...
Python
pero...

        
    Plone es complejo
             
Plone puede ser lento




               
Caching no siempre es la respuesta al tráfico




                           
Plone NO es un framework web de 
           propósito general

    ●   Aunque a veces ovidamos eso...
    ●   Nuestros clientes no piden funcionalidades:
        “queremos Plone, solo necesitamos sacar tal 
        funcionalidad y agregar otras tantas”
    ●   O simplemente creemos que no tenemos otra 
        opción.
    ●   y al final nos queda...
                                   
Frankenplone




          
Y no deberia ser siempre asi. 

     Es posible trabajar con tus 
      herramientas favoritas.


                   
 
    Content Mirror
           
Content Mirror serializa el 
      contenido de Plone en una bdd 
                relacional
●    Todos los tipos de contenidos que vienen out of the 
     box en Plone  y los campos archetypes.
●    Tipos de contenidos archetypes, agregados en 
     productos de terceros. 
●    Mantiene jerarquía de contenido.
●    Mirroring completamente automatizado, no requiere 
     configuración mas allá de la instalación.
 ●   Soporte para Plone 2.5, 3.0, 3.1, 3.2 y 3.3.
                                
Simple




          
Ahora podemos:
    ●   Usar Plone solo para administrar contenido
    ●   Usar cualquier framework para trabajar con el 
        contenido.
    ●   Quitar Plone del deployment
    ●   Dejar de pensar como hacer algo en términos 
        de plone y comenzar a pensar qué queremos 
        realizar.
    ●   Simplificar, simplificar
                                    
                           

..y podemos servir contenido Plone rápido!
Cómo funciona ?
    ●   Se integra  dentro del manejador de eventos de 
        Plone y subscribe eventos al ciclo de vida de 
        contenido (object added, edited, deleted).
    ●   Transforma schemas de contenido Plone  en 
        tablas relacionales usando SQLAlchemy
    ●   Para todos los objetos se genera un schema, 
        incluyendo archivos y relaciones.
    ●   Se genera una tabla para cada tipo de 
        contenido Plone.
                               
     
Instalación
    ●   Bajar: 
        http://code.google.com/p/contentmirror/downloads/list
    ●   Instalar
    ●   Configurar bdd
    ●   Configurar tipos de contenidos propios
    ●   Generar tablas
    ●   Exportar contenido pre­existente

                                  
Configurar la bdd con ZCML
<configure xmlns="http://namespaces.zope.org/zope"
                  xmlns:db="http://namespaces.objectrealms.net/rdb"
                  xmlns:ore="http://namespaces.objectrealms.net/mirror">
   
   <!­­ setup a database connection ­­>
   <db:engine url="postgres://localhost/plone"
              name="mirror­db"
              echo="True"/>

   <!­­ associate the database connection to mirror db structures ­­>
   <db:bind engine="mirror­db"
           metadata="ore.contentmirror.schema.metadata"
           />

</configure>
                                       
Configurar los tipos de contenidos 
                  propios
Por cada tipo de contenido del sitio:

<ore:mirror content= 
"Products.ATContentTypes.content.document.ATDocument" />




                              
Generar tablas y subir el contenido

$ dropdb plone
$ createdb plone ­­encoding=UTF­8

# generate table definitions and create tables
$ bin/instance run parts/productdistros/ContentMirror/ddl.py 
$ postgres > mirror.sql
$ psql plone < /home/andy/plone/zinstance/mirror.sql

# optionally, load existing content
$ bin/instance run parts/productdistros/ContentMirror/bulk.py Plone
                                  
                                  
Listo.




       
Los cambios se envían de forma 
            síncrona a la bdd


plone# select content_id, id, title from content where id = 'front­page';
 content_id |     id     |     title
­­­­­­­­­­­­+­­­­­­­­­­­­+­­­­­­­­­­­­­­­­
          8 | front­page | Content Mirror sent this
(1 row)




                                      
Qué tipos de sitios ?

    ●   Pocos gestores de contenidos, muchos 
        usuarios 
    ●   Sitios freezados
    ●   Sitios con separación clara contenido y 
        presentación: 
        –   Revistas 
        –   Períodicos
        –   Gobierno
 
        –   ONG                
Plyne, por menttes

from pylons import config
from sqlalchemy import Column, MetaData, Table, types
from sqlalchemy.orm import mapper
from sqlalchemy.orm import scoped_session, sessionmaker

meta = MetaData(engine)
model_classes = {}

for tn in engine.table_names():
    class_name = str(tn).capitalize()
    new_class = type( class_name , object.__bases__, dict (object.__dict__))
    new_table = Table( tn, meta, autoload=True)
    mapper(new_class, new_table)    

    model_classes[ class_name ] = new_class
                                         
Plango, por Andy McKay
from django.db import models
from django.contrib.contenttypes.models import ContentType

from utils import normalize_name

class Content(models.Model):
    class Meta:
        db_table = u'content'
            
    content_id = models.IntegerField(primary_key=True, editable=False)
    id = models.CharField(max_length=256, editable=False)
    uid = models.CharField(unique=True, max_length=36, editable=False)
    portal_type = models.CharField(max_length=64, editable=False)
    status = models.CharField(max_length=64, editable=False, null=False)
    type = models.CharField(max_length=64, editable=False)
    container = models.ForeignKey('self', related_name="parent", editable=False)
                                           
Repoze.BFG, por Carlos de la Guardia

class WebSite(UserDict):
    implements(IWebSite,ILocation)
    __acl__ = [ (Allow, Everyone, 'view') ]

    def __init__(self, website_id):
        UserDict.__init__(self)
        self.__name__ = None
        self.__parent__ = None
        self.website_id = website_id
        session = Session()
        website =  session.query( PloneContent ).with_polymorphic( 
            PloneWebSite ).filter( PloneContent.id==website_id ).first()
        self.title = website.title


                                               
Y mas...
    ●   Turbogears
    ●   Werkzeug
    ●   PHP
    ●   Java 




                         
Content Mirror es fácil de extender
●    Por ejemplo
      –   Reportes a partir del contenido
      –   Auditar cambios
      –   Exportar a formatos como JSON
      –   Otros medios de persistencia

●    Content mirror Usa la Arquitectura de 
     Componentes de Zope 

 ●   Otra cosa que sea bdd relacional 
                           
Nosotros estudiamos la AC de Zope 
para que vos no tengas que hacerlo.



                  
Front end para Google App Engine

    ●   Aprovechar la infraestructura de Google
    ●   Usar su autenticación
    ●   Dejar que ellos solucionen la escalabilidad

    ●   Casi un juguete, pero muestra que se puede 
        hacer con ContentMirror y Plone


                                 
front end para GAE 
import os
import wsgiref.handlers

from google.appengine.ext import webapp
from google.appengine.ext.webapp import template
from google.appengine.ext import db
from google.appengine.ext.db import polymodel
from google.appengine.api import users

class PloneContent(polymodel.PolyModel):
    id = db.StringProperty()
    uid = db.StringProperty()
    portal_type = db.StringProperty()
    status = db.StringProperty()
    type = db.StringProperty()

                                      
Plone content in GAE




              
Todos los frontends están 
             disponibles en:


    http://contentmirror.googlecode.com/ 


                      
Caso de éxito




    Biblioteca del Congress en Chile




                    
Crear multiple sitios en una instancia




                        
Seleccionar contenido




               
Definir layout y estilo




                
Deploy usando repoze.bfg 




                 
                         

    Y que Plone sea parte del universo Python
                    
    http://www.plonesymposium.com.br
Muchas gracias!

              Roberto Allende
       Sobre un trabajo de Carlos de la Guardia


         rallende@menttes.com

    http://twitter.com/robertoallende 

       http://robertoallende.com
                           

Más contenido relacionado

La actualidad más candente

Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularFreelancer
 
Introducción al desarrollo de aplicaciones web
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones web
Introducción al desarrollo de aplicaciones webAnfap
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Edgar Dueñas
 
La web como Plataforma con Dojo Toolkit
La web como Plataforma con Dojo ToolkitLa web como Plataforma con Dojo Toolkit
La web como Plataforma con Dojo ToolkitAlex Fuentes
 
Tutorial de eclipsee
Tutorial de eclipseeTutorial de eclipsee
Tutorial de eclipseejavierot99
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryDavid Arango
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeersbetabeers
 
Depurando Java Script - Programador PHP
Depurando Java Script - Programador PHPDepurando Java Script - Programador PHP
Depurando Java Script - Programador PHPJuan Belón Pérez
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebRightster
 
Maven Divide tu código, pruébalo y vencerás
Maven Divide tu código, pruébalo y vencerásMaven Divide tu código, pruébalo y vencerás
Maven Divide tu código, pruébalo y vencerásCristian Romero Matesanz
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Raul Fraile
 
Partes de la pantalla de eclipse
Partes de la pantalla de eclipsePartes de la pantalla de eclipse
Partes de la pantalla de eclipselourdes9898
 

La actualidad más candente (20)

Desarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y AngularDesarrollo Web Ágil con Symfony, Bootstrap y Angular
Desarrollo Web Ágil con Symfony, Bootstrap y Angular
 
Introducción al desarrollo de aplicaciones web
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones web
Introducción al desarrollo de aplicaciones web
 
Javascript
JavascriptJavascript
Javascript
 
Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2Mis primeros pasos con Symfony 2
Mis primeros pasos con Symfony 2
 
La web como Plataforma con Dojo Toolkit
La web como Plataforma con Dojo ToolkitLa web como Plataforma con Dojo Toolkit
La web como Plataforma con Dojo Toolkit
 
Eclipse
EclipseEclipse
Eclipse
 
Tutorial de eclipsee
Tutorial de eclipseeTutorial de eclipsee
Tutorial de eclipsee
 
9.laravel
9.laravel9.laravel
9.laravel
 
Intro a cakephp
Intro a cakephpIntro a cakephp
Intro a cakephp
 
Javascript en proyectos reales: jQuery
Javascript en proyectos reales: jQueryJavascript en proyectos reales: jQuery
Javascript en proyectos reales: jQuery
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeers
 
Depurando Java Script - Programador PHP
Depurando Java Script - Programador PHPDepurando Java Script - Programador PHP
Depurando Java Script - Programador PHP
 
Symfony2
Symfony2Symfony2
Symfony2
 
PHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad WebPHP Avanzado: Seguridad Web
PHP Avanzado: Seguridad Web
 
Maven Divide tu código, pruébalo y vencerás
Maven Divide tu código, pruébalo y vencerásMaven Divide tu código, pruébalo y vencerás
Maven Divide tu código, pruébalo y vencerás
 
Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain Symfony en Drupal 8 - DrupalCamp Spain
Symfony en Drupal 8 - DrupalCamp Spain
 
Mi tutorial-eclipse
Mi tutorial-eclipseMi tutorial-eclipse
Mi tutorial-eclipse
 
Partes de la pantalla de eclipse
Partes de la pantalla de eclipsePartes de la pantalla de eclipse
Partes de la pantalla de eclipse
 
tutorial
tutorialtutorial
tutorial
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 

Destacado

Introducción al desarrollo en Plone
Introducción al desarrollo en PloneIntroducción al desarrollo en Plone
Introducción al desarrollo en PloneRoberto Allende
 
Plone 3 Products Development Cookbook
Plone 3 Products Development CookbookPlone 3 Products Development Cookbook
Plone 3 Products Development Cookbookmenttes
 
CMS + CRM: Integrando Plone y Salesforce
CMS + CRM: Integrando Plone y SalesforceCMS + CRM: Integrando Plone y Salesforce
CMS + CRM: Integrando Plone y Salesforcementtes
 
Plone 4 - Gegenwart und Zukunft (Pycon DE)
Plone 4 - Gegenwart und Zukunft (Pycon DE)Plone 4 - Gegenwart und Zukunft (Pycon DE)
Plone 4 - Gegenwart und Zukunft (Pycon DE)Timo Stollenwerk
 
Construindo uma Intranet Corporativa utilizando Plone
Construindo uma Intranet Corporativa utilizando PloneConstruindo uma Intranet Corporativa utilizando Plone
Construindo uma Intranet Corporativa utilizando Plonementtes
 
From copy to paster: A middle-class Plone developer tale
From copy to paster: A middle-class Plone developer taleFrom copy to paster: A middle-class Plone developer tale
From copy to paster: A middle-class Plone developer talementtes
 
El estado de Plone
El estado de PloneEl estado de Plone
El estado de Plonementtes
 
Management para emprendimientos: Lean Startup
Management para emprendimientos: Lean Startup Management para emprendimientos: Lean Startup
Management para emprendimientos: Lean Startup menttes
 

Destacado (9)

Introducción al desarrollo en Plone
Introducción al desarrollo en PloneIntroducción al desarrollo en Plone
Introducción al desarrollo en Plone
 
Plone 3 Products Development Cookbook
Plone 3 Products Development CookbookPlone 3 Products Development Cookbook
Plone 3 Products Development Cookbook
 
CMS + CRM: Integrando Plone y Salesforce
CMS + CRM: Integrando Plone y SalesforceCMS + CRM: Integrando Plone y Salesforce
CMS + CRM: Integrando Plone y Salesforce
 
Plone 4 - Gegenwart und Zukunft (Pycon DE)
Plone 4 - Gegenwart und Zukunft (Pycon DE)Plone 4 - Gegenwart und Zukunft (Pycon DE)
Plone 4 - Gegenwart und Zukunft (Pycon DE)
 
Construindo uma Intranet Corporativa utilizando Plone
Construindo uma Intranet Corporativa utilizando PloneConstruindo uma Intranet Corporativa utilizando Plone
Construindo uma Intranet Corporativa utilizando Plone
 
From copy to paster: A middle-class Plone developer tale
From copy to paster: A middle-class Plone developer taleFrom copy to paster: A middle-class Plone developer tale
From copy to paster: A middle-class Plone developer tale
 
Introducción a Plone y Zope - v0.1.8
Introducción a Plone y Zope - v0.1.8Introducción a Plone y Zope - v0.1.8
Introducción a Plone y Zope - v0.1.8
 
El estado de Plone
El estado de PloneEl estado de Plone
El estado de Plone
 
Management para emprendimientos: Lean Startup
Management para emprendimientos: Lean Startup Management para emprendimientos: Lean Startup
Management para emprendimientos: Lean Startup
 

Similar a Combinación ganadora: Plone como CMS, tu framework preferido como frontend

Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPHP Vigo
 
MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!SergioIglesiasNET
 
Qué puede aprender Drupal de Plone
Qué puede aprender Drupal de PloneQué puede aprender Drupal de Plone
Qué puede aprender Drupal de Plonementtes
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomlaRoberto Segura
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios webjcarazo
 
Capacitación en “Desarrollo y personalización de Plone”
Capacitación en “Desarrollo y personalización de Plone”Capacitación en “Desarrollo y personalización de Plone”
Capacitación en “Desarrollo y personalización de Plone”Covantec R.L.
 
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018nacho mascort
 
Ez platform-meetup-madrid-march-2018
Ez platform-meetup-madrid-march-2018Ez platform-meetup-madrid-march-2018
Ez platform-meetup-madrid-march-2018crevillo
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETAlberto Diaz Martin
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netAlberto Diaz Martin
 
#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!SergioIglesiasNET
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoJuan Rodríguez
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training DaysLa Drupalera
 
Presentación sobre Display Suite en el Drupal Day Valencia 2012
Presentación sobre Display Suite en el Drupal Day Valencia 2012Presentación sobre Display Suite en el Drupal Day Valencia 2012
Presentación sobre Display Suite en el Drupal Day Valencia 2012Atenea tech
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 

Similar a Combinación ganadora: Plone como CMS, tu framework preferido como frontend (20)

Django
DjangoDjango
Django
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Primeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigoPrimeros pasos Symfony PHPVigo
Primeros pasos Symfony PHPVigo
 
MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!MasterClass Desarrollo Plantillas Joomla!
MasterClass Desarrollo Plantillas Joomla!
 
Qué puede aprender Drupal de Plone
Qué puede aprender Drupal de PloneQué puede aprender Drupal de Plone
Qué puede aprender Drupal de Plone
 
Introducción a la programación para joomla
Introducción a la programación para joomlaIntroducción a la programación para joomla
Introducción a la programación para joomla
 
Django - Plataforma de sitios web
Django - Plataforma de sitios webDjango - Plataforma de sitios web
Django - Plataforma de sitios web
 
Capacitación en “Desarrollo y personalización de Plone”
Capacitación en “Desarrollo y personalización de Plone”Capacitación en “Desarrollo y personalización de Plone”
Capacitación en “Desarrollo y personalización de Plone”
 
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
 
Ez platform-meetup-madrid-march-2018
Ez platform-meetup-madrid-march-2018Ez platform-meetup-madrid-march-2018
Ez platform-meetup-madrid-march-2018
 
CrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NETCrossDvlpu - REACT para desarrolladores de ASP.NET
CrossDvlpu - REACT para desarrolladores de ASP.NET
 
Cross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.netCross development - React para desarrolladores de asp.net
Cross development - React para desarrolladores de asp.net
 
#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!#JoomlaIO - Desarrollo de Plantillas para Joomla!
#JoomlaIO - Desarrollo de Plantillas para Joomla!
 
Dia2
Dia2Dia2
Dia2
 
Taller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con DjangoTaller de introducción al desarrollo web con Django
Taller de introducción al desarrollo web con Django
 
Welcome to Django
Welcome to DjangoWelcome to Django
Welcome to Django
 
¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days¡This is drupal! - Global Training Days
¡This is drupal! - Global Training Days
 
Presentación sobre Display Suite en el Drupal Day Valencia 2012
Presentación sobre Display Suite en el Drupal Day Valencia 2012Presentación sobre Display Suite en el Drupal Day Valencia 2012
Presentación sobre Display Suite en el Drupal Day Valencia 2012
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 

Más de menttes

Plone 4 — what's up doc?
Plone 4 — what's up doc?Plone 4 — what's up doc?
Plone 4 — what's up doc?menttes
 
Reusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de ZopeReusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de Zopementtes
 
1001 formas de promover Python
1001 formas de promover Python1001 formas de promover Python
1001 formas de promover Pythonmenttes
 
Integrando Plone con cualquier cosa
Integrando Plone con cualquier cosaIntegrando Plone con cualquier cosa
Integrando Plone con cualquier cosamenttes
 
Menttes: 5 años emprendiendo con Software Libre
Menttes: 5 años emprendiendo con Software LibreMenttes: 5 años emprendiendo con Software Libre
Menttes: 5 años emprendiendo con Software Librementtes
 
Intranets flexibles y escalables con Plone
Intranets flexibles y escalables con PloneIntranets flexibles y escalables con Plone
Intranets flexibles y escalables con Plonementtes
 
No me hagas pensar. Buenas Prácticas para desarrollar en la web
No me hagas pensar. Buenas Prácticas para desarrollar en la webNo me hagas pensar. Buenas Prácticas para desarrollar en la web
No me hagas pensar. Buenas Prácticas para desarrollar en la webmenttes
 

Más de menttes (7)

Plone 4 — what's up doc?
Plone 4 — what's up doc?Plone 4 — what's up doc?
Plone 4 — what's up doc?
 
Reusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de ZopeReusando componentes Zope fuera de Zope
Reusando componentes Zope fuera de Zope
 
1001 formas de promover Python
1001 formas de promover Python1001 formas de promover Python
1001 formas de promover Python
 
Integrando Plone con cualquier cosa
Integrando Plone con cualquier cosaIntegrando Plone con cualquier cosa
Integrando Plone con cualquier cosa
 
Menttes: 5 años emprendiendo con Software Libre
Menttes: 5 años emprendiendo con Software LibreMenttes: 5 años emprendiendo con Software Libre
Menttes: 5 años emprendiendo con Software Libre
 
Intranets flexibles y escalables con Plone
Intranets flexibles y escalables con PloneIntranets flexibles y escalables con Plone
Intranets flexibles y escalables con Plone
 
No me hagas pensar. Buenas Prácticas para desarrollar en la web
No me hagas pensar. Buenas Prácticas para desarrollar en la webNo me hagas pensar. Buenas Prácticas para desarrollar en la web
No me hagas pensar. Buenas Prácticas para desarrollar en la web
 

Último

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 

Último (10)

Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

Combinación ganadora: Plone como CMS, tu framework preferido como frontend