SlideShare une entreprise Scribd logo
1  sur  23
Télécharger pour lire hors ligne
Website-tool:
CMS of Framework?
   Nils Breunese / VPRO Digitaal
CMS

Content Management System
Webpublicatie: tekst, audio en video
   Films, radio-uitzendingen, wetenschappelijke artikelen,
   technische handleidingen, recensies, columns, blogposts,
   etc.
“Een CMS, alstublieft”
“Een CMS, alstublieft”
Ready to Go?
Een product dat out-of-the-box exact doet wat we willen
bestaat (waarschijnlijk) niet
Uitbreidbaarheid
Inzichtelijkheid
Herbruikbaarheid van componenten
Etc.
smokingtape1717 / CC-BY-NC
http://www.flickr.com/photos/smokingtape/2692114288/
Framework

Erg generieke term
Open source web application framework
Ontwikkelen van dynamische websites
Talloze implementaties
   Spring, Struts, Stripes, Seam, ...
Grails
Ruby on Rails
Snel ontwikkelen
Convention over Configuration
   Domeinobject? Article
   Controller? ArticleController
   Tests? ArticleControllerTests
   Vaste mappenstructuur, veel gaat vanzelf
Het kan altijd anders, maar dan moet je het zelf regelen
Architectuur
Grails                            Groovy Development Kit (GDK)

               Groovy Server Pages (GSP) view templates

                       SiteMesh          layout & decoration

                      Spring MVC                domeinlogica

                  GORM (Hibernate)            database opslag
Grails Plugins
Grails Plugins
Momenteel 293 plugins via grails.org
Taggen, ratings, comments, zoeken, taxonomiën, navigatie,
user interface, JavaScript, testen, feeds, workflow,
integratie, ...
Redelijk tot goede kwaliteit, maar soms nog niet af
CMS plugins, maar nog niet volwassen
Groovy
Groovy Goodness
['a', 'b', 'c'].join('::')                   // 'a::b::c'
["Glen", "Alice"].collect { it.size() }      // [4, 5], closure
user.company?.address?.state?.name           // null-safe
"Good morning, ${name}"                      // GString
assert "Speaking plain English" =~ /plain/   // regex
personList.find { it.firstName == "Glen" }     // find, closure
Groovy Goodness
['a', 'b', 'c'].join('::')                     // 'a::b::c'
["Glen", "Alice"].collect { it.size() }        // [4, 5], closure
user.company?.address?.state?.name             // null-safe
"Good morning, ${name}"                        // GString
assert "Speaking plain English" =~ /plain/     // regex
personList.find { it.firstName == "Glen" }       // find, closure


def mainsite = { [ teasers: Site.findAllByTeaserIsNotNull().teaser ] }
Groovy Goodness
['a', 'b', 'c'].join('::')                     // 'a::b::c'
["Glen", "Alice"].collect { it.size() }        // [4, 5], closure
user.company?.address?.state?.name             // null-safe
"Good morning, ${name}"


                          ♥
assert "Speaking plain English" =~ /plain/
personList.find { it.firstName == "Glen" }
                                               // GString
                                               // regex
                                               // find, closure


def mainsite = { [ teasers: Site.findAllByTeaserIsNotNull().teaser ] }
“Deze vuist op deze vuist”

Frameworks bouwen voort op frameworks
Voeg wat plugins toe...
Schrijf wat code als cement...
En ineens heb je een CMS!
Proof of Concept CMS
Proof of Concept CMS
+----------------------+-------+------+
| Name                 | Files | LOC |
+----------------------+-------+------+
| Controllers          |     3 |   82 |
| Domain Classes       |     2 |   39 |
| Tag Libraries        |     3 |   31 |
+----------------------+-------+------+
| Totals               |     8 | 152 |
+----------------------+-------+------+
Maar...
Gebruikersbeheer?
Versiebeheer?
Workflow?
Clustering?
...
Je zult het toch allemaal moeten aansluiten en/of maken
Glijdende Schaal
     Content Management System


    Content Management Framework


      Web Application Framework
Conclusie

Framework: alles kan
Voor een CMS geldt dit als het goed is ook
Flexibiliteit versus ontwikkeltijd en -kosten
Bedenk goed wat je wil en nodig hebt
Kies de meest concrete technologie die past bij je wensen

Contenu connexe

Similaire à Website-tool: CMS of Framework

Best Practice: Joomla! templating
Best Practice: Joomla! templatingBest Practice: Joomla! templating
Best Practice: Joomla! templatingHans Kuijpers
 
Drupal is Traag: handvatten voor een snelle site.
Drupal is Traag: handvatten voor een snelle site.Drupal is Traag: handvatten voor een snelle site.
Drupal is Traag: handvatten voor een snelle site.LimoenGroen
 
Lucius Drupal Development Cursus
Lucius Drupal Development CursusLucius Drupal Development Cursus
Lucius Drupal Development CursusLuciuswebsystems
 
Bart Lageweg - Ansible/Cobbler
Bart Lageweg - Ansible/CobblerBart Lageweg - Ansible/Cobbler
Bart Lageweg - Ansible/CobblerSplend
 
De 10 geboden van WordPress Development
De 10 geboden van WordPress DevelopmentDe 10 geboden van WordPress Development
De 10 geboden van WordPress DevelopmentFloris Lof
 
Flex In De Praktijk
Flex In De PraktijkFlex In De Praktijk
Flex In De Praktijkmarcel panse
 
Presentatie JUG plugin Merka
Presentatie JUG plugin MerkaPresentatie JUG plugin Merka
Presentatie JUG plugin MerkaKarel Mertens
 
Talk 02 html5-css3
Talk 02 html5-css3Talk 02 html5-css3
Talk 02 html5-css3Monkeyshot
 
Ict2 trm- werking internet
Ict2 trm- werking internetIct2 trm- werking internet
Ict2 trm- werking internetkaatversele
 
Presentatie powershell
Presentatie powershellPresentatie powershell
Presentatie powershelldigistam
 
Toegankelijkheid
ToegankelijkheidToegankelijkheid
ToegankelijkheidAtticus
 
Object Oriented Programming for web applications
Object Oriented Programming for web applicationsObject Oriented Programming for web applications
Object Oriented Programming for web applicationsEdwin Vlieg
 
Techdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureTechdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureMichaël Hompus
 
Joomladagen 2015 Joomla Performance
Joomladagen 2015 Joomla PerformanceJoomladagen 2015 Joomla Performance
Joomladagen 2015 Joomla PerformanceSimon Kloostra
 
Hoe CMI in Drupal features overbodig maakt (of toch niet) - Drupal Tech Talk ...
Hoe CMI in Drupal features overbodig maakt (of toch niet) - Drupal Tech Talk ...Hoe CMI in Drupal features overbodig maakt (of toch niet) - Drupal Tech Talk ...
Hoe CMI in Drupal features overbodig maakt (of toch niet) - Drupal Tech Talk ...Triquanta
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsRichard Tuin
 

Similaire à Website-tool: CMS of Framework (20)

Best Practice: Joomla! templating
Best Practice: Joomla! templatingBest Practice: Joomla! templating
Best Practice: Joomla! templating
 
Refresher HTML(5) and CSS(3) - CC FE & UX
Refresher HTML(5) and CSS(3) - CC FE & UXRefresher HTML(5) and CSS(3) - CC FE & UX
Refresher HTML(5) and CSS(3) - CC FE & UX
 
Drupal is Traag: handvatten voor een snelle site.
Drupal is Traag: handvatten voor een snelle site.Drupal is Traag: handvatten voor een snelle site.
Drupal is Traag: handvatten voor een snelle site.
 
Lucius Drupal Development Cursus
Lucius Drupal Development CursusLucius Drupal Development Cursus
Lucius Drupal Development Cursus
 
Bart Lageweg - Ansible/Cobbler
Bart Lageweg - Ansible/CobblerBart Lageweg - Ansible/Cobbler
Bart Lageweg - Ansible/Cobbler
 
De 10 geboden van WordPress Development
De 10 geboden van WordPress DevelopmentDe 10 geboden van WordPress Development
De 10 geboden van WordPress Development
 
Flex In De Praktijk
Flex In De PraktijkFlex In De Praktijk
Flex In De Praktijk
 
test
testtest
test
 
Presentatie JUG plugin Merka
Presentatie JUG plugin MerkaPresentatie JUG plugin Merka
Presentatie JUG plugin Merka
 
Talk 02 html5-css3
Talk 02 html5-css3Talk 02 html5-css3
Talk 02 html5-css3
 
Vagrant + ansible vs docker
Vagrant + ansible vs dockerVagrant + ansible vs docker
Vagrant + ansible vs docker
 
Ict2 trm- werking internet
Ict2 trm- werking internetIct2 trm- werking internet
Ict2 trm- werking internet
 
Presentatie powershell
Presentatie powershellPresentatie powershell
Presentatie powershell
 
Toegankelijkheid
ToegankelijkheidToegankelijkheid
Toegankelijkheid
 
HTML 5 en CSS 3
HTML 5 en CSS 3HTML 5 en CSS 3
HTML 5 en CSS 3
 
Object Oriented Programming for web applications
Object Oriented Programming for web applicationsObject Oriented Programming for web applications
Object Oriented Programming for web applications
 
Techdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows AzureTechdays 2013 NL - Serious Request met Windows Azure
Techdays 2013 NL - Serious Request met Windows Azure
 
Joomladagen 2015 Joomla Performance
Joomladagen 2015 Joomla PerformanceJoomladagen 2015 Joomla Performance
Joomladagen 2015 Joomla Performance
 
Hoe CMI in Drupal features overbodig maakt (of toch niet) - Drupal Tech Talk ...
Hoe CMI in Drupal features overbodig maakt (of toch niet) - Drupal Tech Talk ...Hoe CMI in Drupal features overbodig maakt (of toch niet) - Drupal Tech Talk ...
Hoe CMI in Drupal features overbodig maakt (of toch niet) - Drupal Tech Talk ...
 
PFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele testsPFZ Workshop - Automatiseren van functionele tests
PFZ Workshop - Automatiseren van functionele tests
 

Plus de Nils Breunese

Improving Performance and Flexibility of Content Listings Using Criteria API
Improving Performance and Flexibility of Content Listings Using Criteria APIImproving Performance and Flexibility of Content Listings Using Criteria API
Improving Performance and Flexibility of Content Listings Using Criteria APINils Breunese
 
Kotlin: a better Java
Kotlin: a better JavaKotlin: a better Java
Kotlin: a better JavaNils Breunese
 
HTTP API for Free? Check out CouchDB
HTTP API for Free? Check out CouchDBHTTP API for Free? Check out CouchDB
HTTP API for Free? Check out CouchDBNils Breunese
 

Plus de Nils Breunese (6)

Improving Performance and Flexibility of Content Listings Using Criteria API
Improving Performance and Flexibility of Content Listings Using Criteria APIImproving Performance and Flexibility of Content Listings Using Criteria API
Improving Performance and Flexibility of Content Listings Using Criteria API
 
Kotlin: a better Java
Kotlin: a better JavaKotlin: a better Java
Kotlin: a better Java
 
NLJUG J-Fall 2011
NLJUG J-Fall 2011NLJUG J-Fall 2011
NLJUG J-Fall 2011
 
NLJUG J-Fall 2011
NLJUG J-Fall 2011NLJUG J-Fall 2011
NLJUG J-Fall 2011
 
HTTP API for Free? Check out CouchDB
HTTP API for Free? Check out CouchDBHTTP API for Free? Check out CouchDB
HTTP API for Free? Check out CouchDB
 
WSO2 Mashup Server
WSO2 Mashup ServerWSO2 Mashup Server
WSO2 Mashup Server
 

Website-tool: CMS of Framework

  • 1. Website-tool: CMS of Framework? Nils Breunese / VPRO Digitaal
  • 2. CMS Content Management System Webpublicatie: tekst, audio en video Films, radio-uitzendingen, wetenschappelijke artikelen, technische handleidingen, recensies, columns, blogposts, etc.
  • 5. Ready to Go? Een product dat out-of-the-box exact doet wat we willen bestaat (waarschijnlijk) niet Uitbreidbaarheid Inzichtelijkheid Herbruikbaarheid van componenten Etc.
  • 7. Framework Erg generieke term Open source web application framework Ontwikkelen van dynamische websites Talloze implementaties Spring, Struts, Stripes, Seam, ...
  • 10. Snel ontwikkelen Convention over Configuration Domeinobject? Article Controller? ArticleController Tests? ArticleControllerTests Vaste mappenstructuur, veel gaat vanzelf Het kan altijd anders, maar dan moet je het zelf regelen
  • 11. Architectuur Grails Groovy Development Kit (GDK) Groovy Server Pages (GSP) view templates SiteMesh layout & decoration Spring MVC domeinlogica GORM (Hibernate) database opslag
  • 13. Grails Plugins Momenteel 293 plugins via grails.org Taggen, ratings, comments, zoeken, taxonomiën, navigatie, user interface, JavaScript, testen, feeds, workflow, integratie, ... Redelijk tot goede kwaliteit, maar soms nog niet af CMS plugins, maar nog niet volwassen
  • 15. Groovy Goodness ['a', 'b', 'c'].join('::') // 'a::b::c' ["Glen", "Alice"].collect { it.size() } // [4, 5], closure user.company?.address?.state?.name // null-safe "Good morning, ${name}" // GString assert "Speaking plain English" =~ /plain/ // regex personList.find { it.firstName == "Glen" } // find, closure
  • 16. Groovy Goodness ['a', 'b', 'c'].join('::') // 'a::b::c' ["Glen", "Alice"].collect { it.size() } // [4, 5], closure user.company?.address?.state?.name // null-safe "Good morning, ${name}" // GString assert "Speaking plain English" =~ /plain/ // regex personList.find { it.firstName == "Glen" } // find, closure def mainsite = { [ teasers: Site.findAllByTeaserIsNotNull().teaser ] }
  • 17. Groovy Goodness ['a', 'b', 'c'].join('::') // 'a::b::c' ["Glen", "Alice"].collect { it.size() } // [4, 5], closure user.company?.address?.state?.name // null-safe "Good morning, ${name}" ♥ assert "Speaking plain English" =~ /plain/ personList.find { it.firstName == "Glen" } // GString // regex // find, closure def mainsite = { [ teasers: Site.findAllByTeaserIsNotNull().teaser ] }
  • 18. “Deze vuist op deze vuist” Frameworks bouwen voort op frameworks Voeg wat plugins toe... Schrijf wat code als cement... En ineens heb je een CMS!
  • 20. Proof of Concept CMS +----------------------+-------+------+ | Name | Files | LOC | +----------------------+-------+------+ | Controllers | 3 | 82 | | Domain Classes | 2 | 39 | | Tag Libraries | 3 | 31 | +----------------------+-------+------+ | Totals | 8 | 152 | +----------------------+-------+------+
  • 22. Glijdende Schaal Content Management System Content Management Framework Web Application Framework
  • 23. Conclusie Framework: alles kan Voor een CMS geldt dit als het goed is ook Flexibiliteit versus ontwikkeltijd en -kosten Bedenk goed wat je wil en nodig hebt Kies de meest concrete technologie die past bij je wensen

Notes de l'éditeur

  1. CMS - Content Management System - Tekst, audio en video: - Films, radio-uitzendingen, wetenschappelijke artikelen, technische handleidingen, recensies, columns, blogposts, etc.
  2. - Veel interpretaties, honderden producten - Gerbrand legt verder uit wat we van een CMS vragen
  3. - Collega’s vertellen straks over hun ervaringen met enkele CMS’en - Ik stak wat ‘lager’ in
  4. - Raamwerk
  5. Frameworks - Erg generieke term - In deze context: open source web application framework - Ondersteunt het ontwikkelen van dynamische websites - Talloze implementaties - Spring, Struts, Stripes, Seam, ... (ze beginnen niet allemaal met een ‘S’)
  6. - Voorbeeld van een modern web application framework: Grails - SpringSource
  7. - Grails ‘leent’ ideeën van Rails, maar is geen kloon - Groovy on Rails -> Grails - Flink actieve community met kennis van zaken
  8. - Grails is een framework, maar maakt zelf ook weer gebruik van frameworks! - “High-level” framework - Cinema.nl maakt ook gebruik van Hibernate en Spring MVC, maar meer op een “low-level” manier
  9. - Extra functionaliteit en componenten: plugins
  10. - Momenteel 293 plugins via grails.org - Taggen, ratings, comments, zoeken, taxonomiën, navigatie, user interface, JavaScript frameworks, testen, feeds, workflow, integratie, ... - Redelijk tot goede kwaliteit, maar soms nog niet af - CMS plugins, maar nog niet volwassen
  11. - VPRO is de hoofdtaal bij VPRO Digitaal - Groovy is grotendeels een superset van Java, dus de meeste Java-code is ook valide Groovy - Groovy voegt een hoop ‘moderne’ en handige constructies toe - Java-programmeurs kunnen steeds ‘groovier’ gaan programmeren - Wel een lelijk logo
  12. - Puntkomma’s, haakjes en return-statements zijn optioneel - Literals voor reguliere expressies, maps en lists - Regex matching
  13. - Puntkomma’s, haakjes en return-statements zijn optioneel - Literals voor reguliere expressies, maps en lists - Regex matching
  14. Lagen van Abstractie - Frameworks bouwen voort op frameworks - Voeg wat plugins toe - Schrijf wat code als cement - En ineens heb je een CMS
  15. - Demo van Grails applicatie
  16. - Exclusief tests, configuratie, templates en CSS - Weinig regels code -> goedkoop en eenvoudig onderhoud
  17. - Hoe hoger, hoe meer functionaliteit concreet geïmplementeerd is - Grails is echt een web application framework, maar met plugins wel op te werken naar een hoger niveau - Hippo en Drupal zijn meer CMF’s, Magnolia misschien ook nog wel