SlideShare a Scribd company logo
PLONE 5 & ML
THE MOST POWERFUL PYTHON OPEN
SOURCE CMS
Created by /Ramon Navarro Bosch @bloodbare
RAMON NAVARRO BOSCH
Plone Foundation Member
Plone Framework Team
CTO at Iskra.cat
Catalan
THE TALK
PLONE 5
Machine Learning
PLONE 5
Quality
Tests
Protect investment in current sites
Usability for real people
Stability
Scale from S to XL
WHO DOES NOT KNOW
PLONE?
From the user point of view
CONTENT
Content is the king (Dexterity)
With full multilingual
GRANULAR SECURITY
Zope/ZODB
Workflow
THEMING
RequireJS/LESS
XSLT/DIAZO
INLINE EDITION / TTW
TRY!
WHO DOES NOT KNOW
PLONE
From the tech point of view
HIERARCHY
DEXTERITY
from plone.app.textfield import RichText
from plone.autoform import directives
from plone.namedfile import field as namedfile
from plone.supermodel.directives import fieldset
from plone.supermodel import model
from z3c.form.browser.radio import RadioFieldWidget
from zope import schema
from zope.schema.vocabulary import SimpleVocabulary
from zope.schema.vocabulary import SimpleTerm
from ploneconf.site import MessageFactory as _
LevelVocabulary = SimpleVocabulary(
[SimpleTerm(value=u'platinum', title=_(u'Platinum Sponsor')),
SimpleTerm(value=u'gold', title=_(u'Gold Sponsor')),
SimpleTerm(value=u'silver', title=_(u'Silver Sponsor')),
TRAVERSAL
http://yoursite.cat/folder-i-created/my-document/my_view
VIEWS
from Products.CMFCore.utils import getToolByName
from Products.Five.browser import BrowserView
from Products.CMFPlone.resources import add_resource_on_request
class TalkListView(BrowserView):
""" A list of talks
"""
def __call__(self):
add_resource_on_request(self.request, 'jquery.datatables')
return super(TalkListView, self).__call__()
def talks(self):
results = []
portal_catalog = getToolByName(self.context, 'portal_catalog')
current_path = "/".join(self.context.getPhysicalPath())
VIEWS II
<browser:page
name="talklistview"
for="*"
layer="..interfaces.IPloneconfSiteLayer"
class=".views.TalkListView"
template="templates/talklistview.pt"
permission="zope2.View"
/>
VIEWS III
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"
metal:use-macro="context/main_template/macros/master"
i18n:domain="ploneconf.site">
<body>
<metal:head fill-slot="javascript_head_slot">
<script type="text/javascript">
{
var oTable = $('#talks').dataTable({
}
</script>
</metal:head>
<metal:content-core fill-slot="content-core">
<table class="listing" id="talks">
$(document).ready(function()
);
})
PYTHONIC
site.folder.document.attribute
ZOPE COMPONENT
ARCHITECTURE
STORAGE OF COMPONENTS
global registry
local registry
ADAPTER
class IPerson(Interface):
def whichTShirtIMWearing(self):
pass
class CatalanGuy(object):
implements(IPerson)
def whichTShirtIMWearing(self):
return "estelada"
class BaskGuy(object):
implements(IPerson)
SUBSCRIBER
<subscriber
for="object.IKindOfObject
zope.lifecycleevent.interfaces.IObjectModifiedEvent"
handler="function"
/>
UTILITY
<utility
for=".interfaces.IGoodAlcohol"
handler=".object.GoodAlcohol"
/>
JS/CSS
Mockup/Patterns
RequireJS/LESS
<input class="pat-pickadate" type="text"
name="form.widgets.IDublinCore.effective"
value=""
data-pat-pickadate="{
'date': {
'format': 'mmmm d, yyyy',
'max': [2035, 1, 1],
'min': [1915, 1, 1],
'firstDay': 0,
'selectYears': 200,
'placeholder': 'Posa una data',
'today': 'Avui'},
'time': {
'placeholder': 'Tria l'hora',
'today': 'Avui',
'format': 'h:i a'}}" >
DIAZO
<?xml version="1.0" encoding="UTF-8"?>
<rules
xmlns="http://namespaces.plone.org/diazo"
xmlns:css="http://namespaces.plone.org/diazo/css"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<theme href="/++theme++abb.basictheme/index.html" css:if-not-content=".userro
<theme href="/++theme++abb.basictheme/index-anon.html" css:if-content=
<notheme css:if-not-content="#visual-portal-wrapper" />
<rules if-content="//*[@id='portal-top']">
<!-- Attributes -->
<copy attributes="*" theme="/html" content="/html"/>
<!-- Base tag -->
<before theme="/html/head/title" content="/html/head/base"/>
<!-- Title -->
<replace theme="/html/head/title" content="/html/head/title" />
REST API
plone.rest
<plone:service
method="PUT"
for="plone.dexterity.interfaces.IDexterityContent"
factory=".demo.Put"
/>
class Put(Service):
def render(self):
return ISerializeToJSON(self.content)
TESTING
JENKINS.PLONE.ORG
... and the plone testing team
PLONE 5.0 BETA 3!
IS HERE!
git clone git@github.com/plone/jump.into.git
python2.7 bootstrap.py
# You need python-dev libpng-dev libjpeg-dev build-essential
# libxml2-dev libxslt-dev (gcc)
./bin/buildout -v
# Coffee
./bin/instance fg
TRAINING AND DOCS
training.plone.org
docs.plone.org
FUTURE (MY OPINION)?
REST API
asyncio
Pyramid/SustanceD
JS frontend
MACHINE LEARNING?
Content focused with sklearn
GOALS
Related content
Classification of current content with existing data set
Recommendation of subject tags
Semantic search on the live search
CLUSTERING
GITHUB.COM/COLLECTIVE/COLLECTIVE.MACHINELEARNING
ADAPTER ILEARNINGSTRING
from zope.component import getAdapter
from collective.machinelearning.interfaces import ILearningString
getAdapter(obj, ILearningString)
NORMALIZE AND VECTORIZE
nltk.stem
FeatureHasher
And we store the corpus as a pickle
CLUSTERIZE
Define the number of clusters on FE
KMeans!
And we store the model as a pickle
We store on the objects to which cluster it belongs
We can predict new objects to which cluster it belongs
Security is implicit by Plone
FUTURE
Classification (now trying Naive Bayes) on clusters
(collective.gensim)
Recommendation
Semantic Search
External and incremental computation
COMMUNITY
THE END
THANKS
@BLOODBARE
RAMON@PLONE.ORG

More Related Content

PDF
How containers helped a SaaS startup be developed and go live
PDF
Resource registries plone conf 2014
PDF
HTTP Caching and PHP
PDF
Hammr Project Update: Machine Images and Docker Containers for your Cloud, OW...
 
PDF
A Hands-on Introduction on Terraform Best Concepts and Best Practices
PDF
Challenges when building high profile editorial sites
PDF
HTTP For the Good or the Bad - FSEC Edition
PDF
AWS DevOps - Terraform, Docker, HashiCorp Vault
How containers helped a SaaS startup be developed and go live
Resource registries plone conf 2014
HTTP Caching and PHP
Hammr Project Update: Machine Images and Docker Containers for your Cloud, OW...
 
A Hands-on Introduction on Terraform Best Concepts and Best Practices
Challenges when building high profile editorial sites
HTTP For the Good or the Bad - FSEC Edition
AWS DevOps - Terraform, Docker, HashiCorp Vault

What's hot (20)

PPTX
Drilling deeper with Veil's PowerTools
PDF
ApacheConNA 2015: What's new in Apache httpd 2.4
PDF
Hashiconf EU 2019 - A Tour of Terraform 0.12
PDF
How to build a High Performance PSGI/Plack Server
PDF
Die .htaccess richtig nutzen
PDF
Nuts and Bolts of WebSocket Devoxx 2014
PDF
Forget the Web
PDF
Php on Windows
PDF
HTTPS + Let's Encrypt
PPTX
How to do everything with PowerShell
PDF
실시간 서비스 플랫폼 개발 사례
PDF
Securing Prometheus exporters using HashiCorp Vault
PPTX
Running Docker in Development & Production (#ndcoslo 2015)
PDF
Keybase Vault Auto-Unseal HashiTalks2020
PDF
Common Pitfalls for your Drupal Site, and How to Avoid Them
PDF
Terraform - Taming Modern Clouds
PPTX
Reusable, composable, battle-tested Terraform modules
PPT
Why and How Powershell will rule the Command Line - Barcamp LA 4
KEY
Using and scaling Rack and Rack-based middleware
ODP
Remove php calls and scale your site like crazy !
Drilling deeper with Veil's PowerTools
ApacheConNA 2015: What's new in Apache httpd 2.4
Hashiconf EU 2019 - A Tour of Terraform 0.12
How to build a High Performance PSGI/Plack Server
Die .htaccess richtig nutzen
Nuts and Bolts of WebSocket Devoxx 2014
Forget the Web
Php on Windows
HTTPS + Let's Encrypt
How to do everything with PowerShell
실시간 서비스 플랫폼 개발 사례
Securing Prometheus exporters using HashiCorp Vault
Running Docker in Development & Production (#ndcoslo 2015)
Keybase Vault Auto-Unseal HashiTalks2020
Common Pitfalls for your Drupal Site, and How to Avoid Them
Terraform - Taming Modern Clouds
Reusable, composable, battle-tested Terraform modules
Why and How Powershell will rule the Command Line - Barcamp LA 4
Using and scaling Rack and Rack-based middleware
Remove php calls and scale your site like crazy !
Ad

Viewers also liked (20)

PDF
1周遅れのScala入学 #nds41
KEY
puppies
PDF
Varnish in action confoo11
PPT
Qlda Chp2 Quan Ly Tong The
PPT
Bridges Of 2008 No Names
PPT
Wall Epresentation
PDF
Managing a shared_mysql_farm_phpday2011
PPT
Old Vs New A New Approach To A Mobile Classroom
PDF
5 Reasons Why Your Podcast Sucks On Itunes
PPS
Pengembangan Kawasan Andalan Riau
PPTX
PPT
Outsiders Jc
PDF
Aviso nº 3 CONTRATAÇÃO DE ESCOLA Técnicos Especializados
PPT
Vocab Outsiders Jane C
PPT
La base per a l'aprenentatge s xxi
PDF
Lista unitária graduação ingles 1198
PPT
Im Cb Trobada Ice 1 09
PPT
Business Continuity & Payment Systems
PPT
Blogger Sofrasi Sunum
PPT
Sports Scheduling System
1周遅れのScala入学 #nds41
puppies
Varnish in action confoo11
Qlda Chp2 Quan Ly Tong The
Bridges Of 2008 No Names
Wall Epresentation
Managing a shared_mysql_farm_phpday2011
Old Vs New A New Approach To A Mobile Classroom
5 Reasons Why Your Podcast Sucks On Itunes
Pengembangan Kawasan Andalan Riau
Outsiders Jc
Aviso nº 3 CONTRATAÇÃO DE ESCOLA Técnicos Especializados
Vocab Outsiders Jane C
La base per a l'aprenentatge s xxi
Lista unitária graduação ingles 1198
Im Cb Trobada Ice 1 09
Business Continuity & Payment Systems
Blogger Sofrasi Sunum
Sports Scheduling System
Ad

Similar to Plone 5 and machine learning (20)

PDF
Responsive design
PDF
The specs behind the sex, mobile-friendly layout beyond the desktop
PPTX
Diazo: Bridging Designers and Programmers
KEY
It's a Mod World - A Practical Guide to Rocking Modernizr
KEY
HTML5와 모바일
PDF
HTML 5 - Overview
PDF
Database@Home - Data Driven : Loading, Indexing, and Searching with Text and ...
PDF
Pinkoi Mobile Web
PPTX
Firefox OS - The platform you deserve - Firefox OS Budapest workshop - 2013-1...
PDF
Html5 intro
PDF
Responsive Websites
ODP
Pyramid Lighter/Faster/Better web apps
PDF
Disruptive code
PPTX
HTML5 and CSS3 Techniques You Can Use Today
KEY
HTML5: Markup Evolved
PDF
An Introduction to Tornado
PDF
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
KEY
[Coscup 2012] JavascriptMVC
PPT
Ext Js
PDF
The goodies of zope, pyramid, and plone (2)
Responsive design
The specs behind the sex, mobile-friendly layout beyond the desktop
Diazo: Bridging Designers and Programmers
It's a Mod World - A Practical Guide to Rocking Modernizr
HTML5와 모바일
HTML 5 - Overview
Database@Home - Data Driven : Loading, Indexing, and Searching with Text and ...
Pinkoi Mobile Web
Firefox OS - The platform you deserve - Firefox OS Budapest workshop - 2013-1...
Html5 intro
Responsive Websites
Pyramid Lighter/Faster/Better web apps
Disruptive code
HTML5 and CSS3 Techniques You Can Use Today
HTML5: Markup Evolved
An Introduction to Tornado
HTML5 (and friends) - History, overview and current status - jsDay Verona 11....
[Coscup 2012] JavascriptMVC
Ext Js
The goodies of zope, pyramid, and plone (2)

More from Ramon Navarro (10)

PDF
Guillotina
PDF
Pipelines for model deployment
PDF
Plone server
PDF
CI on large open source software : Plone & Plone 5 is here!
PDF
Pyramid
PDF
Multilingual sites in plone
PDF
Cafè amb web
PDF
Presentacio meetup Python BCN
PDF
plone.app.multilingual
PDF
WPD Barcelona 2008 Què és Plone ?
Guillotina
Pipelines for model deployment
Plone server
CI on large open source software : Plone & Plone 5 is here!
Pyramid
Multilingual sites in plone
Cafè amb web
Presentacio meetup Python BCN
plone.app.multilingual
WPD Barcelona 2008 Què és Plone ?

Recently uploaded (20)

PPTX
Essential Infomation Tech presentation.pptx
PPTX
VVF-Customer-Presentation2025-Ver1.9.pptx
PPTX
history of c programming in notes for students .pptx
PPTX
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
PDF
Navsoft: AI-Powered Business Solutions & Custom Software Development
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PPTX
Introduction to Artificial Intelligence
PDF
Wondershare Filmora 15 Crack With Activation Key [2025
PDF
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
PDF
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
PDF
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
PPTX
Transform Your Business with a Software ERP System
PDF
Odoo Companies in India – Driving Business Transformation.pdf
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PPTX
Operating system designcfffgfgggggggvggggggggg
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PPTX
ai tools demonstartion for schools and inter college
PDF
top salesforce developer skills in 2025.pdf
Essential Infomation Tech presentation.pptx
VVF-Customer-Presentation2025-Ver1.9.pptx
history of c programming in notes for students .pptx
Agentic AI : A Practical Guide. Undersating, Implementing and Scaling Autono...
Navsoft: AI-Powered Business Solutions & Custom Software Development
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Design an Analysis of Algorithms I-SECS-1021-03
Introduction to Artificial Intelligence
Wondershare Filmora 15 Crack With Activation Key [2025
Raksha Bandhan Grocery Pricing Trends in India 2025.pdf
T3DD25 TYPO3 Content Blocks - Deep Dive by André Kraus
SAP S4 Hana Brochure 3 (PTS SYSTEMS AND SOLUTIONS)
Transform Your Business with a Software ERP System
Odoo Companies in India – Driving Business Transformation.pdf
wealthsignaloriginal-com-DS-text-... (1).pdf
Operating system designcfffgfgggggggvggggggggg
Which alternative to Crystal Reports is best for small or large businesses.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
ai tools demonstartion for schools and inter college
top salesforce developer skills in 2025.pdf

Plone 5 and machine learning