SlideShare une entreprise Scribd logo
1  sur  75
Télécharger pour lire hors ligne
Plone Server
Experimental ? Fun !
Ramon
Navarro Bosch
CATALAN
we do things because we don’t know it
was impossible
CTO iskra.cat
CTO intranetum.com
FWT plone.org
No FWT opinion
so why ?
Great talks
Plone 2020
Martin DX et al.
Really great component design
Timo Quality
Plone Rest API
Asko Hero
Async + Low level
Nathan 4WD
Elastic Search - Front End NG2
Eric Front
Front End NG 2
Barcelona SPRINT 2016
15 DEVS on BACK + API + FRONT
THEMING
PAS
JS/CSS
CATALOG DX
GENERIC
SETUP
MULTI
LINGUAL
LINK
INTEGRITY
ZOPE2
AC
CMF
ACQUISIT.
ZODB
VERSION
LOCKING
BEHAVIOR
Z3CFORM
FORMLIB
ZPT
ZTK
CONTENT
RULES
VIEWLETS
PORTLETS
WORK
FLOWS
QUERY
STRING
REGISTRY
TTW
RESTRICT
PYTHON
UPGRADE
DISCUSS
CONTENT
TYPES
UUID
ITERATE
OPENID
CACHING
PLONE
THEMING
PAS
JS/CSS
CATALOG DX
GENERIC
SETUP
MULTI
LINGUAL
LINK
INTEGRITY
ZOPE2
AC
CMF
ACQUISIT.
ZODB
VERSION
LOCKING
BEHAVIOR
Z3CFORM
FORMLIB
ZPT
ZTK
CONTENT
RULES
VIEWLETS
PORTLETS
WORK
FLOWS
QUERY
STRING
REGISTRY
TTW
RESTRICT
PYTHON
UPGRADE
DISCUSS
CONTENT
TYPES
UUID
ITERATE
OPENID
CACHING
PLONE
THEMING
PAS API
JS/CSS
CATALOG
API
DX
GENERIC
SETUP
MULTI
LINGUAL
LINK
INTEGRITY
ZOPE2
AC
CMF
ACQUISIT.
ZODB
VERSION
LOCKING
BEHAVIOR
Z3CFORM
FORMLIB
ZPT
ZTK
CONTENT
RULES
VIEWLETS
PORTLETS
WORK
FLOWS
QUERY
STRING
REGISTRY
TTW
RESTRICT
PYTHON
UPGRADE
DISCUSS
CONTENT
TYPES
UUID
ITERATE
OPENID
CACHING
TILES
MOSAIC
REST API
PAS
PLUGINS
CATALOG
IMPLEMEN
FW API
FW API
SERVER
greatest
common
divisor
CORE
frontend
PloneCMS TILES
THEMING
PAS API
JS/CSS
CATALOG
API
DX
GENERIC
SETUP
MULTI
LINGUAL
LINK
INTEGRITY
ZOPE2
AC
CMF
ACQUISIT.
ZODB
VERSION
LOCKING
BEHAVIOR
Z3CFORM
FORMLIB
ZPT
ZTK
CONTENT
RULES
VIEWLETS
PORTLETS
WORK
FLOWS
QUERY
STRING
REGISTRY
TTW
RESTRICT
PYTHON
UPGRADE
DISCUSS
CONTENT
TYPES
UUID
ITERATE
OPENID
CACHING
TILES
MOSAIC
REST API
PAS
PLUGINS
CATALOG
IMPLEMEN
FW API
FW API
SERVER
greatest
common
divisor
CORE
frontend
PloneCMS TILES
THEMING
PAS API
JS/CSS
CATALOG
API
DX
GENERIC
SETUP
MULTI
LINGUAL
LINK
INTEGRITY
ZOPE2
AC
CMF
ACQUISIT.
ZODB
VERSION
LOCKING
BEHAVIOR
Z3CFORM
FORMLIB
ZPT
ZTK
CONTENT
RULES
VIEWLETS
PORTLETS
WORK
FLOWS
QUERY
STRING
REGISTRY
TTW
RESTRICT
PYTHON
UPGRADE
DISCUSS
CONTENT
TYPES
UUID
ITERATE
OPENID
CACHING
TILES
MOSAIC
REST API
PAS
PLUGINS
CATALOG
IMPLEMEN
FW API
FW API
SERVER
greatest
common
divisor
CORE
frontend
PloneCMS TILES
THEMING
PAS API
JS/CSS
CATALOG
API
DX
GENERIC
SETUP
MULTI
LINGUAL
LINK
INTEGRITY
ZOPE2
AC
CMF
ACQUISIT.
ZODB
VERSION
LOCKING
BEHAVIOR
Z3CFORM
FORMLIB
ZPT
ZTK
CONTENT
RULES
VIEWLETS
PORTLETS
WORK
FLOWS
QUERY
STRING
REGISTRY
TTW
RESTRICT
PYTHON
UPGRADE
DISCUSS
CONTENT
TYPES
UUID
ITERATE
OPENID
CACHING
TILES
MOSAIC
REST API
PAS
PLUGINS
CATALOG
IMPLEMEN
FW API
FW API
SERVER
greatest
common
divisor
CORE
frontend
PloneCMS TILES
THEMING
PAS API
JS/CSS
CATALOG
API
DX
GENERIC
SETUP
MULTI
LINGUAL
LINK
INTEGRITY
ZOPE2
AC
CMF
ACQUISIT.
ZODB
VERSION
LOCKING
BEHAVIOR
Z3CFORM
FORMLIB
ZPT
ZTK
CONTENT
RULES
VIEWLETS
PORTLETS
WORK
FLOWS
QUERY
STRING
REGISTRY
TTW
RESTRICT
PYTHON
UPGRADE
DISCUSS
CONTENT
TYPES
UUID
ITERATE
OPENID
CACHING
TILES
MOSAIC
REST API
PAS
PLUGINS
CATALOG
IMPLEMEN
FW API
FW API
SERVER
greatest
common
divisor
CORE
frontend
PloneCMS TILES
Plone
5
Plone
6
X
REST
API
JS
FRONT
POSSIBLE FUTURE
we need it at work
(intranetum.com)
Performance problems
on write operations and async
integration, lots of docker containers
Collecting all ideas,
opinions of paining
zope/plone “features”
and simplify
Why don’t use all the GOOD parts and
ADAPT them
to create a REST CMS API FWT
for a SIMPLER PLONE
backend ?
Simploneity
one way to do
something
Non
Opinionated
ZODB 5
ZEO asyncio
ZTK
An async app server that
offers a traversable REST
API with a ZODB
And we can build a
CMS on top of it
Headless CMS
• NOT included : The view part!
• Included : Strong flexible API
• Included : DB/Persistance
• Included : CRUD and Management ?
Content Type
• NO CMF
• zope.container and dx
• 1 content rule them all: container (Item)
Definition of content type
• Definition of Generic Content types global
• Content type defined in code with directives:
• catalog/index
• read/write
• primary
Definition of content type
class IDocument(IItem):
catalog(title='text')
title = schema.TextLine(
title=_('Títle'),
required=False)
<plone:contenttype
portal_type="Todo"
schema=".todo.ITodo"
class=".todo.Todo"
behaviors=".todo.IDublinCore"
/>
plone.jsonserializer
• Used on plone.app.mosaic
• Need to merge with plone.restapi
• Serializes and deserializes DX content and types
to JSON
plone.registry
• Main/unique configuration place
• All persistent info in one place
API DEFINITION
• TRAVERSAL -> JSON
• FRAMING
• Websocket API
• PLONE REST API (BASE on plone.server)
API DEFINITION
"plone.server.interfaces.IPloneSite": {
"endpoints": {
"@registry": {
"GET": {
"factory": "plone.server.api.registry.Read",
"permission": "plone.ReadConfiguration"
},
"PATCH": {
…
"DELETE": {
"factory": "plone.server.api.portal.DefaultDELETE",
"permission": "plone.DeletePortals"
}
CORS
• Defined by site on registry
• One configuration for all the site
Mount DB / Sites
• /DB/SITE/FOLDER/OBJ
• ZEO / ZODB
"databases": [
{
"plone": {
"storage": "ZODB",
"folder": "data"
},
"zeo1": {
"storage": "ZEO",
"address": "127.0.0.1",
"port": 8090
}
}
],
Traversal
• Get the resource
• User abstraction
• Language negotiation
• Check Access permission
• View lookup
• Traverse view
• View security checker
• Render lookup / content type
negotiation
• Transaction View execution
• Render execution / Framing
• CORS checks/headers
Traversal
• READ CALLS
• GET
• HEAD
• OPTIONS
• WRITE CALLS
• POST
• PATCH
• PUT
• DELETE
Request
• site_components
(globalSiteManager)
• site_settings (plone.registry)
• app (rootApp)
• site (plone site)
• security (authenticated users)
• resource (main object)
• tail (queue of traversing after
main object)
• _db_id (id of db)
• _site_id (id of site)
Helpers
• subrequest : do a real request to API
• do_traverse : do a traversal with security
Upload/Download
• External BlobStorage with async (buffer and
resumable) for upload and download
• TUS support for client resumable upload
• Process configuration (APP configuration) in
Root Object throw config JSON file (may REST
API)
• Registry configuration and local components
(SITE configuration) throw REST API
• Installation addons (old install.py)
AddOns and config
Delegate to External
• Define the interfaces and allow to have different
implementations to get:
• Users DB
• Catalog
No Acquisition
No Attribute Traverse
• portal[‘folder1’][‘folder2’][‘item’]
NO Generic Setup
NO z3cform
Roles
• plone.Owner
• plone.Editor
• plone.Reader
• plone.Anonymous
• plone.SiteAdmin
• plone.SiteDeleter
Permissions
• plone.AccessContent
• plone.ModifyContent
• plone.DeleteContent
• plone.AddContent
• plone.ViewContent
• plone.AccessPreflight
• plone.SeePermissions
• plone.ChangePermissions
• plone.ReindexContent
• plone.AddPortal
• plone.GetPortals
• plone.DeletePortals
• plone.MountDatabase
• plone.GetDatabases
• plone.UmountDatabase
• plone.WriteConfiguration
• plone.ReadConfiguration
• plone.RegisterConfigurations
• plone.ManageAddons
Packages
• from 93 to 10 plone*
• Lines of code (py):
• Plone 5 : 881070
• plone* 129185
• P.S. : 222447
• plone* 13955
• plone.server
• plone.dexterity
• plone.registry
• plone.supermodel
• plone.uuid
• plone.behavior
• plone.alterego
• plone.rfc822
• plone.jsonserializer
• plone.i18n
plone.app.openid
plone.app.iterate
plone.app.dexterity
plone.app.caching
Products.CMFPlacefulWorkflow
Products.Archetypes
zope.testing
Products.ATContentTypes
plone.app.upgrade
ZODB3
Zope2
Products.CMFPlone
zope.site
zope.publisherzope.processlifetime
zope.interface
zope.component
zope.traversing
zope.taleszope.tal
zope.structuredtext
zope.pagetemplate
zope.location
zope.i18nmessageidzope.i18n
zope.event
zope.dottedname
zope.deprecation
zope.deferredimport
zope.container
zope.cachedescriptors
zope.app.locales
z3c.autoinclude
transaction
plonetheme.barceloneta
plone.themeplone.sessionplone.schema
plone.registry
plone.protectplone.portlets
plone.portlet.staticplone.portlet.collection
plone.outputfilters
plone.memoize
plone.locking
plone.intelligenttext
plone.indexer
plone.i18n
plone.contentrules
plone.browserlayer
plone.batching
plone.app.workflowplone.app.vocabularies
plone.app.viewletmanager
plone.app.uuid
plone.app.usersplone.app.theming
plone.app.registry
plone.app.redirector
plone.app.portletsplone.app.locales
plone.app.linkintegrity
plone.app.layout
plone.app.multilingualplone.app.i18n
plone.app.folderplone.app.discussionplone.app.customerize
plone.app.controlpanel
plone.app.contenttypes
plone.app.contentrulesplone.app.contentmenu
plone.app.contentlistingplone.app.content
plone.api
mockup
five.pt
five.localsitemanager
five.customerize
borg.localrole
Products.statusmessagesProducts.contentmigration
Products.ResourceRegistries
Products.PortalTransformsProducts.PluginRegistry
Products.PluggableAuthService
Products.PlonePAS
Products.PlacelessTranslationService
Products.PasswordResetTool
Products.MimetypesRegistry
Products.MimetypesRegistry
Products.GenericSetup
Products.ExternalEditorProducts.ExtendedPathIndex
Products.DCWorkflow
Products.CMFUidProducts.CMFQuickInstallerTool
Products.CMFEditions
Products.CMFDynamicViewFTIProducts.CMFDiffToolProducts.CMFCoreExtensionClass
DateTime
Acquisition
zdaemon
ZConfig
zc.lockfile
Products.StandardCacheManagers
Products.PythonScripts
Products.MIMEToolsProducts.MailHost
Products.ExternalMethodProducts.BTreeFolder2
zope.viewlet
zope.testbrowser
zope.sizezope.sequencesort
zope.sendmail
zope.security
zope.schemazope.ptresource
zope.proxyzope.lifecycleeventzope.exceptions
zope.contenttype
zope.contentprovider
zope.configurationzope.browserresourcezope.browserpagezope.browsermenuzope.browser
zLOG
zExceptions
tempstorage
pytz
initgroups
docutils
ZopeUndoRestrictedPython
Record
Products.ZCTextIndex
Products.ZCatalog
Products.OFSP
PersistenceMultiMapping
Missing
DocumentTemplate
AccessControlProducts.SecureMailHostProducts.CMFFormController
zope.ramcache
zope.ramcache
plone.openid
zope.annotation
z3c.form
plone.z3cform
plone.supermodel
plone.autoform
plone.app.z3cform
lxml
plone.schemaeditor
plone.rfc822
plone.namedfileplone.formwidget.namedfile
plone.dexterity
plone.behaviorplone.app.textfieldz3c.zcmlhook
plone.cachepurging
plone.caching
Products.validation
plone.app.widgets
plone.app.collection
plone.app.blob
plone.uuid
plone.folderProducts.ZSQLMethods
zope.datetime
zope.brokenzope.filerepresentation
plone.keyringcollective.monkeypatcher
five.globalrequestrepoze.xmliterplone.transformchain
six
Unidecode
zope.componentvocabulary
zope.formlib
plone.app.imagingplone.app.querystring
romanplone.subrequest
plone.resourceeditor
plone.resource
diazoplone.app.relationfield
plone.app.intid
z3c.relationfieldarchetypes.multilingual
plone.app.versioningbehavior
plone.app.event
plone.stringinterp
zope.globalrequest
Chameleon
z3c.pt
Products.ZopeVersionControl
zope.copy
zope.app.publication
plone.scaleplone.synchronize
plone.alteregoarchetypes.schemaextender
five.intid
zope.intid
zc.relation
z3c.objpath
plone.formwidget.recurrence
plone.eventProducts.DateRecurringIndex
collective.elephantvocabulary
zope.error
zope.authentication
zope.keyreference
plone.app.openid
plone.app.iterate
plone.app.dexterity
plone.app.caching
Products.CMFPlacefulWorkflow
Products.Archetypes
zope.testing
Products.ATContentTypes
plone.app.upgrade
ZODB3
Zope2
Products.CMFPlone
zope.site
zope.publisherzope.processlifetime
zope.interface
zope.component
zope.traversing
zope.taleszope.tal
zope.structuredtext
zope.pagetemplate
zope.location
zope.i18nmessageidzope.i18n
zope.event
zope.dottedname
zope.deprecation
zope.deferredimportzope.container
zope.cachedescriptors
zope.app.locales
z3c.autoinclude
transaction
plonetheme.barceloneta
plone.theme
plone.sessionplone.schema
plone.registry
plone.protectplone.portlets
plone.portlet.staticplone.portlet.collection
plone.outputfilters
plone.memoize
plone.lockingplone.intelligenttext
plone.indexer
plone.i18n
plone.contentrules
plone.browserlayer
plone.batching
plone.app.workflowplone.app.vocabulariesplone.app.viewletmanager
plone.app.uuid
plone.app.users
plone.app.theming
plone.app.registry
plone.app.redirector
plone.app.portletsplone.app.locales
plone.app.linkintegrity
plone.app.layout
plone.app.multilingualplone.app.i18nplone.app.folder
plone.app.discussionplone.app.customerize
plone.app.controlpanelplone.app.contenttypes
plone.app.contentrulesplone.app.contentmenu
plone.app.contentlistingplone.app.content
plone.api
mockup
five.pt
five.localsitemanager
five.customerize
borg.localrole
Products.statusmessagesProducts.contentmigration
Products.ResourceRegistries
Products.PortalTransforms
Products.PluginRegistry
Products.PluggableAuthService
Products.PlonePAS
Products.PlacelessTranslationService
Products.PasswordResetTool
Products.MimetypesRegistry
Products.MimetypesRegistry
Products.GenericSetup
Products.ExternalEditor
Products.ExtendedPathIndex
Products.DCWorkflow
Products.CMFUidProducts.CMFQuickInstallerTool
Products.CMFEditions
Products.CMFDynamicViewFTI
Products.CMFDiffTool
Products.CMFCore
ExtensionClass
DateTime
Acquisition
zdaemon
ZConfig
zc.lockfile
Products.StandardCacheManagers
Products.PythonScripts
Products.MIMEToolsProducts.MailHost
Products.ExternalMethodProducts.BTreeFolder2
zope.viewlet
zope.testbrowser
zope.size
zope.sequencesort
zope.sendmail
zope.security
zope.schema
zope.ptresource
zope.proxy
zope.lifecycleevent
zope.exceptions
zope.contenttype
zope.contentproviderzope.configurationzope.browserresourcezope.browserpagezope.browsermenuzope.browser
zLOGzExceptions
tempstorage
pytzinitgroups
docutils
ZopeUndo
RestrictedPython
Record
Products.ZCTextIndex
Products.ZCatalog
Products.OFSPPersistence
MultiMapping
Missing
DocumentTemplateAccessControlProducts.SecureMailHost
Products.CMFFormController
zope.ramcache
zope.ramcache
plone.openid
zope.annotation
z3c.form
plone.z3cform
plone.supermodel
plone.autoform
plone.app.z3cform
plone.schemaeditor
plone.rfc822
plone.namedfile
plone.formwidget.namedfile
plone.dexterityplone.behavior
plone.app.textfield
z3c.zcmlhook
plone.cachepurging
plone.caching
Products.validation
plone.app.widgets
plone.app.collection
plone.app.blob
plone.uuid
plone.folder
Products.ZSQLMethods
zope.datetime
zope.broken
zope.filerepresentation
plone.keyring
collective.monkeypatcher
five.globalrequest
repoze.xmliter
plone.transformchain
Unidecode
zope.componentvocabulary
zope.formlib
plone.app.imaging
plone.app.querystring
plone.subrequest
plone.resourceeditor
plone.resourcediazoplone.app.relationfield
plone.app.intid
z3c.relationfield
archetypes.multilingual
plone.app.lockingbehavior
plone.app.versioningbehavior
plone.app.event
plone.stringinterp
zope.globalrequest
Chameleon
z3c.pt
Products.ZopeVersionControl
zope.copy
zope.app.publication
plone.scale
plone.synchronize
plone.alterego
archetypes.schemaextender
five.intid
zope.intid
zc.relation
z3c.objpath
plone.formwidget.recurrence
plone.event
Products.DateRecurringIndex
collective.elephantvocabularyzope.error
zope.authentication
zope.keyreference
Products.OFSP
AccessControl
zope.security/securitypolicy
plone.server
aiohttp/plone.server
Products.ExtendedPathIndex
Products.ZCTextIndex
Products.ZCatalog
Products.DateRecurringIndex
zope.testing
zope.publisher
zope.testbrowser
plone.app.users
DateTime
Products.BTreeFolder2
plone.portlets
zope.tales
ExtensionClass
zope.site
zope.traversing
plone.app.openid
plone.app.iterate
plone.app.dexterity
plone.app.caching
Products.CMFPlacefulWorkflow
zope.testing
plone.app.upgrade
ZODB3
Products.CMFPlone
zope.site
zope.publisherzope.processlifetime
zope.interface
zope.component
zope.traversing
zope.taleszope.tal
zope.structuredtext
zope.location
zope.i18nmessageidzope.i18n
zope.event
zope.dottedname
zope.deprecation
zope.deferredimportzope.container
zope.cachedescriptors
zope.app.locales
z3c.autoinclude
transaction
plone.sessionplone.schema
plone.registry
plone.protectplone.portlets
plone.portlet.static
plone.portlet.collection
plone.outputfilters
plone.memoize
plone.lockingplone.intelligenttext
plone.indexer
plone.i18n
plone.contentrules
plone.browserlayer
plone.batching
plone.app.workflow
plone.app.vocabularies
plone.app.viewletmanager
plone.app.uuid
plone.app.users
plone.app.registry
plone.app.redirector
plone.app.portlets
plone.app.locales
plone.app.linkintegrity
plone.app.layout
plone.app.multilingual
plone.app.i18n
plone.app.folder
plone.app.discussion
plone.app.customerize
plone.app.controlpanel
plone.app.contenttypes
plone.app.contentrules
plone.app.contentmenu
plone.app.contentlisting
plone.app.content
plone.api
mockup
borg.localrole
Products.statusmessages
Products.contentmigration
Products.PortalTransforms
Products.PluginRegistry
Products.PluggableAuthService
Products.PlonePAS
Products.PlacelessTranslationService
Products.PasswordResetTool
Products.MimetypesRegistry
Products.MimetypesRegistry
Products.GenericSetup
Products.ExternalEditor
Products.ExtendedPathIndex
Products.DCWorkflow
Products.CMFUid
Products.CMFQuickInstallerTool
Products.CMFEditions
Products.CMFDynamicViewFTI
ExtensionClass
DateTime
zc.lockfile
Products.StandardCacheManagers
Products.PythonScripts
Products.MIMEToolsProducts.MailHost
Products.ExternalMethodProducts.BTreeFolder2
zope.testbrowser
zope.size
zope.sequencesort
zope.sendmail
zope.security
zope.schema
zope.ptresource
zope.proxyzope.lifecycleevent
zope.exceptions
zope.contenttype
zope.contentprovider
zope.configuration
zope.browserresource
zope.browserpage
zope.browser
zLOG
zExceptionstempstorage
docutils
ZopeUndoRestrictedPythonRecord
Products.ZCTextIndex
Products.ZCatalogPersistence
MultiMapping
Missing
DocumentTemplateAccessControlProducts.SecureMailHost
zope.ramcache
zope.ramcache
plone.openid
zope.annotation
plone.supermodel
plone.schemaeditor
plone.rfc822
plone.dexterity
plone.behavior
plone.app.textfield
z3c.zcmlhook
plone.cachepurging
plone.caching
Products.validation
plone.app.collection
plone.app.blobplone.uuid
zope.datetimezope.broken
zope.filerepresentation
plone.keyring
collective.monkeypatcher
repoze.xmliter
plone.transformchain
Unidecode
zope.componentvocabulary
plone.app.imaging
plone.app.querystring
plone.subrequest
plone.resourceeditor
plone.resource
diazo
plone.app.relationfield
plone.app.intid
z3c.relationfield
plone.app.lockingbehavior
plone.app.versioningbehavior
plone.app.event
plone.stringinterp
zope.globalrequest
Products.ZopeVersionControl
zope.copy
zope.app.publication
plone.scale
plone.synchronize
plone.alterego
zope.intid
z3c.objpath
plone.event
Products.DateRecurringIndex
collective.elephantvocabulary
zope.error
zope.authentication
zope.keyreference
zope.browsermenu
Persistence
Products.CMFQuickInstallerTool
plone.app.blob
plone.server
plone.namedfile
plone.folder
borg.localrole
plone.app.uuid
plone.app.redirector
zope.ptresource
plone.app.intid
plone.app.i18n
Products.CMFPlone
plone.browserlayer
plone.app.textfield
plone.app.iterate
plone.app.caching Products.CMFPlacefulWorkflow
plone.app.upgrade
ZODB5
zope.processlifetime
zope.interface
zope.component
zope.structuredtext
zope.location
zope.i18nmessageid
zope.i18n
zope.dottedname
zope.deprecation
zope.deferredimport
zope.container
zope.cachedescriptors
zope.app.locales
z3c.autoinclude
transaction
plone.sessionplone.schema
plone.registry
plone.protect
plone.outputfilters
plone.memoize
plone.locking
plone.intelligenttext
plone.indexer
plone.i18n
plone.contentrules
plone.batching
plone.app.vocabularies
plone.app.locales
plone.app.layout
plone.app.customerize
plone.app.contentrules
plone.api
Products.contentmigration
Products.PortalTransforms
Products.PluginRegistry
Products.PlacelessTranslationService
Products.MimetypesRegistry
Products.MimetypesRegistry
Products.GenericSetup
Products.DCWorkflow
Products.CMFEditions
zc.lockfile
Products.StandardCacheManagers
Products.PythonScripts
Products.MIMETools
Products.MailHost
Products.ExternalMethod
zope.size
zope.sequencesort
zope.sendmail
zope.security
zope.schema
zope.proxy
zope.lifecycleevent
zope.exceptions
zope.contenttype
zope.contentprovider
zope.configuration
zLOG
zExceptions
ZopeUndo
RestrictedPython
Record
MultiMapping
DocumentTemplateProducts.SecureMailHostzope.ramcache
zope.ramcache
plone.openid
zope.annotation
plone.supermodel
plone.rfc822
plone.dexterity
plone.behavior
z3c.zcmlhook
plone.cachepurging
plone.caching
Products.validation
plone.uuid
zope.datetime
zope.broken
zope.filerepresentation
plone.keyring collective.monkeypatcher
plone.transformchain
zope.componentvocabulary
plone.app.imaging
plone.app.querystring
plone.resource
plone.app.relationfield
z3c.relationfield
plone.app.lockingbehavior
plone.app.versioningbehavior
plone.stringinterp
Products.ZopeVersionControl
zope.copy
zope.app.publication
plone.scale
plone.synchronize
plone.alterego
zope.intid z3c.objpath
collective.elephantvocabulary
zope.error
zope.authentication
zope.keyreference
zope.event
zdaemon
ZConfig
persistent
zc.relation
Products.CMFDiffTool
Products.ExternalEditor
Products.PasswordResetTool
How transactions work?
• 1 connection x thread
• locking 1 transaction x request object
• for each request cache updated
Async loop
• Why you need async ??
• Async Tasks connected to ZODB
Async Queue
await getUtility(IQueueUtility).add(viewOperation)
Main Thread
Transaction
Executor
Thread
Queue
Executor
Thread
Queue
Executor
Thread
Queue
Executor
Thread
ZEO
Networking
Thread
AioHTTP
• FAST
• SSL support
• Custom router
• Websockets support
HTTP client/server for asyncio
Gunicorn compatible
• WSGI
• Workers: gunicorn my_app_module:my_web_app
--bind localhost:8080 --worker-class
aiohttp.worker.GunicornWebWorker --workers
6
• UVLoop: gunicorn my_app_module:my_web_app
--bind localhost:8080 --worker-class
aiohttp.worker.GunicornUVLoopWebWorker --
workers 6
Python
>= 3.5
Testing
• py.test + layers (gocept.pytestlayer)
• coverage
• Functional to API
• WS and API wrappers / helpers
Some addons
• users : pserver.oauth
• catalog : pserver.elasticsearch
• field : pserver.gcloudstorage
• cms : pserver.cms
Performance
• standalone (12t 100c) = 119% + ràpid
• cluster 3 UC
• GUnicorn UVLoop + 2 processos plone.server
• Mean RO : 170% + ràpid
Performance
Performance
Performance
DEMO
• https://github.com/pyrenees/pserver.demo.git
• Content Type definition
• API definition
• Install
• Configuration of a site
TODOS
• Tests and integration of forked packages (9)
• Lots of security audits
• Blobs (ZODB implementation)
• caching - memoize
• Offline Migration
• aiohttp.web -> aiohttp.server
• user DB / catalog (ZODB implementation)
• Join jsonserializer + restapi
• plone.api
• Workflow
• Throw The API customization
Futures
• Neo4J backend
• GraphQL query interface
• Create DB in a ZEO ?
Near future
• REST API
• PLONE_CLIENT
We are a community!
We can have fun!
We should be proud!
Who wants this
“experiment” is named
plone.server ?
Thanks !

Contenu connexe

Tendances

Async Tasks with Django Channels
Async Tasks with Django ChannelsAsync Tasks with Django Channels
Async Tasks with Django ChannelsAlbert O'Connor
 
HTML5 Introduction
HTML5 IntroductionHTML5 Introduction
HTML5 Introductiondynamis
 
The goodies of zope, pyramid, and plone (2)
The goodies of zope, pyramid, and plone (2)The goodies of zope, pyramid, and plone (2)
The goodies of zope, pyramid, and plone (2)Dylan Jay
 
Pyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsPyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsDylan Jay
 
SearchLove San Diego 2018 | Tom Anthony | An Introduction to HTTP/2 & Service...
SearchLove San Diego 2018 | Tom Anthony | An Introduction to HTTP/2 & Service...SearchLove San Diego 2018 | Tom Anthony | An Introduction to HTTP/2 & Service...
SearchLove San Diego 2018 | Tom Anthony | An Introduction to HTTP/2 & Service...Distilled
 
Lightweight Approach to Building Web APIs with .NET
Lightweight Approach to Building Web APIs with .NETLightweight Approach to Building Web APIs with .NET
Lightweight Approach to Building Web APIs with .NETChristian Horsdal
 
HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]
HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]
HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]Aaron Gustafson
 
Breaking The Cross Domain Barrier
Breaking The Cross Domain BarrierBreaking The Cross Domain Barrier
Breaking The Cross Domain BarrierAlex Sexton
 
The Future of the Web: HTML5
The Future of the Web: HTML5The Future of the Web: HTML5
The Future of the Web: HTML5Derek Bender
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the IslandsOpening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the IslandsBastian Hofmann
 

Tendances (19)

Talking to Web Services
Talking to Web ServicesTalking to Web Services
Talking to Web Services
 
RESTful design
RESTful designRESTful design
RESTful design
 
CakePHP 3.0: Embracing the future
CakePHP 3.0: Embracing the futureCakePHP 3.0: Embracing the future
CakePHP 3.0: Embracing the future
 
Async Tasks with Django Channels
Async Tasks with Django ChannelsAsync Tasks with Django Channels
Async Tasks with Django Channels
 
HTML5 Introduction
HTML5 IntroductionHTML5 Introduction
HTML5 Introduction
 
The goodies of zope, pyramid, and plone (2)
The goodies of zope, pyramid, and plone (2)The goodies of zope, pyramid, and plone (2)
The goodies of zope, pyramid, and plone (2)
 
Pyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web appsPyramid Lighter/Faster/Better web apps
Pyramid Lighter/Faster/Better web apps
 
SearchLove San Diego 2018 | Tom Anthony | An Introduction to HTTP/2 & Service...
SearchLove San Diego 2018 | Tom Anthony | An Introduction to HTTP/2 & Service...SearchLove San Diego 2018 | Tom Anthony | An Introduction to HTTP/2 & Service...
SearchLove San Diego 2018 | Tom Anthony | An Introduction to HTTP/2 & Service...
 
Lightweight Approach to Building Web APIs with .NET
Lightweight Approach to Building Web APIs with .NETLightweight Approach to Building Web APIs with .NET
Lightweight Approach to Building Web APIs with .NET
 
HTML5
HTML5HTML5
HTML5
 
Up to Speed on HTML 5 and CSS 3
Up to Speed on HTML 5 and CSS 3Up to Speed on HTML 5 and CSS 3
Up to Speed on HTML 5 and CSS 3
 
SPDY - or maybe HTTP2.0
SPDY - or maybe HTTP2.0SPDY - or maybe HTTP2.0
SPDY - or maybe HTTP2.0
 
SPDY
SPDYSPDY
SPDY
 
HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]
HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]
HTML5 Semantics, Accessibility & Forms [Carsonified HTML5 Online Conference]
 
Breaking The Cross Domain Barrier
Breaking The Cross Domain BarrierBreaking The Cross Domain Barrier
Breaking The Cross Domain Barrier
 
The Future of the Web: HTML5
The Future of the Web: HTML5The Future of the Web: HTML5
The Future of the Web: HTML5
 
[In Control 2010] HTML5
[In Control 2010] HTML5[In Control 2010] HTML5
[In Control 2010] HTML5
 
Plone Futures
Plone FuturesPlone Futures
Plone Futures
 
Opening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the IslandsOpening up the Social Web - Standards that are bridging the Islands
Opening up the Social Web - Standards that are bridging the Islands
 

En vedette

Martin Aspeli Extending And Customising Plone 3
Martin Aspeli   Extending And Customising Plone 3Martin Aspeli   Extending And Customising Plone 3
Martin Aspeli Extending And Customising Plone 3Vincenzo Barone
 
Lista unitária graduação ingles 1198
Lista unitária graduação ingles 1198Lista unitária graduação ingles 1198
Lista unitária graduação ingles 1198Pedro França
 
Tosa Tribune Dec. 08
Tosa Tribune Dec. 08Tosa Tribune Dec. 08
Tosa Tribune Dec. 08Cheryl Dick
 
Upshot Spotlights Eight Trends Influencing Today’s Marketers
Upshot Spotlights Eight Trends Influencing Today’s MarketersUpshot Spotlights Eight Trends Influencing Today’s Marketers
Upshot Spotlights Eight Trends Influencing Today’s MarketersLiz Aviles
 
Upshot 2015 trend_slrgprt
Upshot 2015 trend_slrgprtUpshot 2015 trend_slrgprt
Upshot 2015 trend_slrgprtLiz Aviles
 
Lista unitária graduação afd 1194
Lista unitária graduação afd 1194Lista unitária graduação afd 1194
Lista unitária graduação afd 1194Pedro França
 
Flower Presentation
Flower PresentationFlower Presentation
Flower PresentationMrs. McCabe
 

En vedette (20)

Martin Aspeli Extending And Customising Plone 3
Martin Aspeli   Extending And Customising Plone 3Martin Aspeli   Extending And Customising Plone 3
Martin Aspeli Extending And Customising Plone 3
 
Skies.Mccabe
Skies.MccabeSkies.Mccabe
Skies.Mccabe
 
Family
FamilyFamily
Family
 
Food
FoodFood
Food
 
Musicalsby144
Musicalsby144Musicalsby144
Musicalsby144
 
Lista unitária graduação ingles 1198
Lista unitária graduação ingles 1198Lista unitária graduação ingles 1198
Lista unitária graduação ingles 1198
 
Anurag&Rupali
Anurag&RupaliAnurag&Rupali
Anurag&Rupali
 
The Ant
The AntThe Ant
The Ant
 
Tosa Tribune Dec. 08
Tosa Tribune Dec. 08Tosa Tribune Dec. 08
Tosa Tribune Dec. 08
 
Upshot Spotlights Eight Trends Influencing Today’s Marketers
Upshot Spotlights Eight Trends Influencing Today’s MarketersUpshot Spotlights Eight Trends Influencing Today’s Marketers
Upshot Spotlights Eight Trends Influencing Today’s Marketers
 
123
123123
123
 
25 n 2010_powerpointatalayas
25 n 2010_powerpointatalayas25 n 2010_powerpointatalayas
25 n 2010_powerpointatalayas
 
Upshot 2015 trend_slrgprt
Upshot 2015 trend_slrgprtUpshot 2015 trend_slrgprt
Upshot 2015 trend_slrgprt
 
Barcamp Mumbai #8
Barcamp Mumbai #8Barcamp Mumbai #8
Barcamp Mumbai #8
 
Birds
BirdsBirds
Birds
 
Lista unitária graduação afd 1194
Lista unitária graduação afd 1194Lista unitária graduação afd 1194
Lista unitária graduação afd 1194
 
25 Flowers
25 Flowers25 Flowers
25 Flowers
 
Flower Presentation
Flower PresentationFlower Presentation
Flower Presentation
 
Beaches
BeachesBeaches
Beaches
 
Ibo And Other Nigeria Pics
Ibo And Other Nigeria PicsIbo And Other Nigeria Pics
Ibo And Other Nigeria Pics
 

Similaire à Plone server

Big Data Web applications for Interactive Hadoop by ENRICO BERTI at Big Data...
 Big Data Web applications for Interactive Hadoop by ENRICO BERTI at Big Data... Big Data Web applications for Interactive Hadoop by ENRICO BERTI at Big Data...
Big Data Web applications for Interactive Hadoop by ENRICO BERTI at Big Data...Big Data Spain
 
Learning the basics of Apache NiFi for iot OSS Europe 2020
Learning the basics of Apache NiFi for iot OSS Europe 2020Learning the basics of Apache NiFi for iot OSS Europe 2020
Learning the basics of Apache NiFi for iot OSS Europe 2020Timothy Spann
 
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto Docker, Inc.
 
Terraform - Taming Modern Clouds
Terraform  - Taming Modern CloudsTerraform  - Taming Modern Clouds
Terraform - Taming Modern CloudsNic Jackson
 
Battle of NoSQL stars: Amazon's SDB vs MongoDB vs CouchDB vs RavenDB
Battle of NoSQL stars: Amazon's SDB vs MongoDB vs CouchDB vs RavenDBBattle of NoSQL stars: Amazon's SDB vs MongoDB vs CouchDB vs RavenDB
Battle of NoSQL stars: Amazon's SDB vs MongoDB vs CouchDB vs RavenDBJesse Wolgamott
 
nuclio Overview October 2017
nuclio Overview October 2017nuclio Overview October 2017
nuclio Overview October 2017iguazio
 
Logging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & KibanaLogging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & KibanaAmazee Labs
 
Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02Ramamohan Chokkam
 
Pratik Patel: Titanium as Platform: Feature-Rich, Database-Driven Mobile Apps
Pratik Patel: Titanium as Platform: Feature-Rich, Database-Driven Mobile AppsPratik Patel: Titanium as Platform: Feature-Rich, Database-Driven Mobile Apps
Pratik Patel: Titanium as Platform: Feature-Rich, Database-Driven Mobile AppsAxway Appcelerator
 
(Fios#02) 2. elk 포렌식 분석
(Fios#02) 2. elk 포렌식 분석(Fios#02) 2. elk 포렌식 분석
(Fios#02) 2. elk 포렌식 분석INSIGHT FORENSIC
 
JmDNS : Service Discovery for the 21st Century
 JmDNS : Service Discovery for the 21st Century JmDNS : Service Discovery for the 21st Century
JmDNS : Service Discovery for the 21st CenturyGnu Alsonative
 
JmDNS : Service Discovery for the 21st Century
 JmDNS : Service Discovery for the 21st Century JmDNS : Service Discovery for the 21st Century
JmDNS : Service Discovery for the 21st CenturyGnu Alsonative
 
iguazio - nuclio overview to CNCF (Sep 25th 2017)
iguazio - nuclio overview to CNCF (Sep 25th 2017)iguazio - nuclio overview to CNCF (Sep 25th 2017)
iguazio - nuclio overview to CNCF (Sep 25th 2017)Eran Duchan
 
MongoDB World 2019: Terraform New Worlds on MongoDB Atlas
MongoDB World 2019: Terraform New Worlds on MongoDB Atlas MongoDB World 2019: Terraform New Worlds on MongoDB Atlas
MongoDB World 2019: Terraform New Worlds on MongoDB Atlas MongoDB
 
Automated infrastructure is on the menu
Automated infrastructure is on the menuAutomated infrastructure is on the menu
Automated infrastructure is on the menujtimberman
 
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMotDelphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMotArnaud Bouchez
 
plackdo, plack-like web interface on perl6
plackdo, plack-like web interface on perl6plackdo, plack-like web interface on perl6
plackdo, plack-like web interface on perl6Nobuo Danjou
 

Similaire à Plone server (20)

Big Data Web applications for Interactive Hadoop by ENRICO BERTI at Big Data...
 Big Data Web applications for Interactive Hadoop by ENRICO BERTI at Big Data... Big Data Web applications for Interactive Hadoop by ENRICO BERTI at Big Data...
Big Data Web applications for Interactive Hadoop by ENRICO BERTI at Big Data...
 
Kamailio Updates - VUC 588
Kamailio Updates - VUC 588Kamailio Updates - VUC 588
Kamailio Updates - VUC 588
 
Learning the basics of Apache NiFi for iot OSS Europe 2020
Learning the basics of Apache NiFi for iot OSS Europe 2020Learning the basics of Apache NiFi for iot OSS Europe 2020
Learning the basics of Apache NiFi for iot OSS Europe 2020
 
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
Orchestrating Docker with Terraform and Consul by Mitchell Hashimoto
 
Terraform - Taming Modern Clouds
Terraform  - Taming Modern CloudsTerraform  - Taming Modern Clouds
Terraform - Taming Modern Clouds
 
Battle of NoSQL stars: Amazon's SDB vs MongoDB vs CouchDB vs RavenDB
Battle of NoSQL stars: Amazon's SDB vs MongoDB vs CouchDB vs RavenDBBattle of NoSQL stars: Amazon's SDB vs MongoDB vs CouchDB vs RavenDB
Battle of NoSQL stars: Amazon's SDB vs MongoDB vs CouchDB vs RavenDB
 
nuclio Overview October 2017
nuclio Overview October 2017nuclio Overview October 2017
nuclio Overview October 2017
 
Logging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & KibanaLogging with Elasticsearch, Logstash & Kibana
Logging with Elasticsearch, Logstash & Kibana
 
Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02Jsonsaga 100605143125-phpapp02
Jsonsaga 100605143125-phpapp02
 
Pratik Patel: Titanium as Platform: Feature-Rich, Database-Driven Mobile Apps
Pratik Patel: Titanium as Platform: Feature-Rich, Database-Driven Mobile AppsPratik Patel: Titanium as Platform: Feature-Rich, Database-Driven Mobile Apps
Pratik Patel: Titanium as Platform: Feature-Rich, Database-Driven Mobile Apps
 
(Fios#02) 2. elk 포렌식 분석
(Fios#02) 2. elk 포렌식 분석(Fios#02) 2. elk 포렌식 분석
(Fios#02) 2. elk 포렌식 분석
 
Into The Box 2018 Ortus Keynote
Into The Box 2018 Ortus KeynoteInto The Box 2018 Ortus Keynote
Into The Box 2018 Ortus Keynote
 
JmDNS : Service Discovery for the 21st Century
 JmDNS : Service Discovery for the 21st Century JmDNS : Service Discovery for the 21st Century
JmDNS : Service Discovery for the 21st Century
 
JmDNS : Service Discovery for the 21st Century
 JmDNS : Service Discovery for the 21st Century JmDNS : Service Discovery for the 21st Century
JmDNS : Service Discovery for the 21st Century
 
iguazio - nuclio overview to CNCF (Sep 25th 2017)
iguazio - nuclio overview to CNCF (Sep 25th 2017)iguazio - nuclio overview to CNCF (Sep 25th 2017)
iguazio - nuclio overview to CNCF (Sep 25th 2017)
 
Edge of the Web
Edge of the WebEdge of the Web
Edge of the Web
 
MongoDB World 2019: Terraform New Worlds on MongoDB Atlas
MongoDB World 2019: Terraform New Worlds on MongoDB Atlas MongoDB World 2019: Terraform New Worlds on MongoDB Atlas
MongoDB World 2019: Terraform New Worlds on MongoDB Atlas
 
Automated infrastructure is on the menu
Automated infrastructure is on the menuAutomated infrastructure is on the menu
Automated infrastructure is on the menu
 
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMotDelphi ORM SOA MVC SQL NoSQL JSON REST mORMot
Delphi ORM SOA MVC SQL NoSQL JSON REST mORMot
 
plackdo, plack-like web interface on perl6
plackdo, plack-like web interface on perl6plackdo, plack-like web interface on perl6
plackdo, plack-like web interface on perl6
 

Plus de Ramon Navarro

Pipelines for model deployment
Pipelines for model deploymentPipelines for model deployment
Pipelines for model deploymentRamon Navarro
 
How containers helped a SaaS startup be developed and go live
How containers helped a SaaS startup be developed and go liveHow containers helped a SaaS startup be developed and go live
How containers helped a SaaS startup be developed and go liveRamon Navarro
 
Plone 5 and machine learning
Plone 5 and machine learningPlone 5 and machine learning
Plone 5 and machine learningRamon Navarro
 
CI on large open source software : Plone & Plone 5 is here!
CI on large open source software : Plone & Plone 5 is here!CI on large open source software : Plone & Plone 5 is here!
CI on large open source software : Plone & Plone 5 is here!Ramon Navarro
 
Resource registries plone conf 2014
Resource registries plone conf 2014Resource registries plone conf 2014
Resource registries plone conf 2014Ramon Navarro
 
Multilingual sites in plone
Multilingual sites in ploneMultilingual sites in plone
Multilingual sites in ploneRamon Navarro
 
Presentacio meetup Python BCN
Presentacio meetup Python BCNPresentacio meetup Python BCN
Presentacio meetup Python BCNRamon Navarro
 
plone.app.multilingual
plone.app.multilingual plone.app.multilingual
plone.app.multilingual Ramon Navarro
 
WPD Barcelona 2008 Què és Plone ?
WPD Barcelona 2008 Què és Plone ?WPD Barcelona 2008 Què és Plone ?
WPD Barcelona 2008 Què és Plone ?Ramon Navarro
 

Plus de Ramon Navarro (12)

Guillotina
GuillotinaGuillotina
Guillotina
 
Pipelines for model deployment
Pipelines for model deploymentPipelines for model deployment
Pipelines for model deployment
 
How containers helped a SaaS startup be developed and go live
How containers helped a SaaS startup be developed and go liveHow containers helped a SaaS startup be developed and go live
How containers helped a SaaS startup be developed and go live
 
Plone 5 and machine learning
Plone 5 and machine learningPlone 5 and machine learning
Plone 5 and machine learning
 
CI on large open source software : Plone & Plone 5 is here!
CI on large open source software : Plone & Plone 5 is here!CI on large open source software : Plone & Plone 5 is here!
CI on large open source software : Plone & Plone 5 is here!
 
Resource registries plone conf 2014
Resource registries plone conf 2014Resource registries plone conf 2014
Resource registries plone conf 2014
 
Pyramid
PyramidPyramid
Pyramid
 
Multilingual sites in plone
Multilingual sites in ploneMultilingual sites in plone
Multilingual sites in plone
 
Cafè amb web
Cafè amb webCafè amb web
Cafè amb web
 
Presentacio meetup Python BCN
Presentacio meetup Python BCNPresentacio meetup Python BCN
Presentacio meetup Python BCN
 
plone.app.multilingual
plone.app.multilingual plone.app.multilingual
plone.app.multilingual
 
WPD Barcelona 2008 Què és Plone ?
WPD Barcelona 2008 Què és Plone ?WPD Barcelona 2008 Què és Plone ?
WPD Barcelona 2008 Què és Plone ?
 

Dernier

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsAndolasoft Inc
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsArshad QA
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdfWave PLM
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comFatema Valibhai
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfkalichargn70th171
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxComplianceQuest1
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...kellynguyen01
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceanilsa9823
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxbodapatigopi8531
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...panagenda
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AIABDERRAOUF MEHENNI
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️anilsa9823
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Steffen Staab
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...OnePlan Solutions
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionSolGuruz
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfkalichargn70th171
 

Dernier (20)

How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdfThe Ultimate Test Automation Guide_ Best Practices and Tips.pdf
The Ultimate Test Automation Guide_ Best Practices and Tips.pdf
 
A Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docxA Secure and Reliable Document Management System is Essential.docx
A Secure and Reliable Document Management System is Essential.docx
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
Hand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptxHand gesture recognition PROJECT PPT.pptx
Hand gesture recognition PROJECT PPT.pptx
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online  ☂️
CALL ON ➥8923113531 🔝Call Girls Kakori Lucknow best sexual service Online ☂️
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Diamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with PrecisionDiamond Application Development Crafting Solutions with Precision
Diamond Application Development Crafting Solutions with Precision
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 

Plone server