SlideShare una empresa de Scribd logo
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

Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfMarianneBAyn
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxTaim11
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdfIsabelHuairaGarma
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
manual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfmanual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfprofmartinsuarez
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaFernando Villares
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.sofiasonder
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadaspqeilyn0827
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusraquelariza02
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...Kevin Serna
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx44652726
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024DanielErazoMedina
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfjjfch3110
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdffrank0071
 
proyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesproyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesssuserbe0d1c
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.saravalentinat22
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfManuelCampos464987
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfcj3806354
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxLeidyfuentes19
 

Último (20)

Unidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdfUnidad 1- Historia y Evolucion de las computadoras.pdf
Unidad 1- Historia y Evolucion de las computadoras.pdf
 
Presentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptxPresentacion y Extension de tema para Blogger.pptx
Presentacion y Extension de tema para Blogger.pptx
 
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdfHIGADO  Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
HIGADO Y TRAUMA HEPATICO UDABOL 2024 (3).pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
manual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdfmanual-de-oleohidraulica-industrial-vickers.pdf
manual-de-oleohidraulica-industrial-vickers.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.Estudio de la geometría analitica. Pptx.
Estudio de la geometría analitica. Pptx.
 
herramientas informaticas mas utilizadas
herramientas informaticas mas utilizadasherramientas informaticas mas utilizadas
herramientas informaticas mas utilizadas
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
HerramientasInformaticas ¿Que es? - ¿Para que sirve? - Recomendaciones - Comp...
 
Robótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptxRobótica educativa para la eduacion primaria .pptx
Robótica educativa para la eduacion primaria .pptx
 
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
ACTIVIDAD DE TECNOLOGÍA AÑO LECTIVO 2024
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdfPons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
Pons, A. - El desorden digital - guia para historiadores y humanistas [2013].pdf
 
proyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptualesproyectos_social_y_socioproductivos _mapas_conceptuales
proyectos_social_y_socioproductivos _mapas_conceptuales
 
Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.Herramientas informáticas. Sara Torres R.
Herramientas informáticas. Sara Torres R.
 
Diagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdfDiagrama de flujo basada en la reparacion de automoviles.pdf
Diagrama de flujo basada en la reparacion de automoviles.pdf
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 

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