SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
XWiki
                         Developing simple web applications quickly




                                                         Copyright (c) Vincent Massol - 2012
    Ocober 2012


Friday, October 12, 12
Agenda
                         • Architecture
                         • Developing on XWiki
                         • Usages
                         • Pros and cons
                         • QA
                                                 Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Architecture


                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
XWiki Platform




                   ... for developing (collaborative) web applications
                                                                         Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Building an Application

                                                                           Runtime




                                   Traditional way
                                                Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Building an Application

       Runtime                                                                Runtime




                             XWiki way - Morphing!
                                                     Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Developing on XWiki
                             a.k.a Morphing XWiki




                                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Extensions




                                      Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Adding Structure

                         • Ability to associate arbitrary
                           data to any wiki page
                           • Enable structure in the wiki
                           • Enable Application development
                           • == Application wiki or Next Gen Wiki
                         • Application Within Minutes
                                                            Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Classes - Objects




                                       Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Class Sheets

                 • A Document with script to display the
                         content of Object(s) nicely
                 • Automatic usage if defined in Class
                         Document
                 • Can be overridden on a page basis if needed

                                                       Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Skinning & Theming




                                       Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Skin Extensions
                         CSS                      JS




                               == Grease Monkey        Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Scripting in Pages (1/2)
     {{groovy}}
     import groovy.json.*

     def url = "https://api.github.com/users/xwiki/repos".toURL().text
     def root = new JsonSlurper().parseText(url)

     println "|=Project|=Description|=Use Wiki?|=Use Issues?"
     root.each() { repo ->
         println "|[[${repo.name}>>http://github.com/xwiki/$
     {repo.name}]]|${repo.description}|${repo.has_wiki}|$
     {repo.has_issues}"
     }
     {{/groovy}}




                                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Scripting in Pages (2/2)
     {{velocity}}
     #set ($xwql = "where doc.content like '%welcome%'")
     #foreach ($item in $services.query.xwql($xwql).execute())
       #if ($request.confirm == "1")
          #set ($itemDoc = $xwiki.getDocument($item))
          $itemDoc.setContent($itemDoc.getContent().replaceAll(
            "welcome", "bienvenue"))
          $itemDoc.save("Replaced bienvenue")
          * [[$item>>$item]] replaced!
       #else
          * [[$item>>$item]]
       #end
     #end

     [[Replace "welcome" by "bienvenue">>?confirm=1]]
     {{/velocity}}



                                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
UI Extensions
                                            Result
  Extension Point
   {{velocity}}
   ...
   #foreach($uix in $services.uix.getExtensions(
        'org.xwiki.platform.panels.Applications'))
     #set($params = $uix.getParameters())
     * [[image:$params.icon $params.label>>$params.target]]
   #end
   ...
   {{/velocity}}



           Extension

                                                  Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Wiki Macros




                                   Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Components
                         @Role
                         public interface Macro
                         {
                             List<Block> execute();
                         }

                         @Component
                         @Named("message")
                         @Singleton
                         public class MessageMacro implements Macro
                         {
                              @Inject
                              private Execution execution;

                                @Inject
                                @Named("box")
                                private Macro boxMacro;

                                public List<Block> execute()
                                {
                                   ...
                                }
                         }

                         META-INF/components.txt
                         org.xwiki.rendering.internal.macro.message.MessageMacro




                                         + Wiki Components!
                                                                                   Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Usages


                                  Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Multiple Usages




                                      Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
http://www.xwiki.org/xwiki/bin/view/Main/Screenshots
                                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Long tail of Apps
                                               Excel of the
                                                  Web

                                              Web’s Swiss
                                              army knife




                                       Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Pros and Cons


                                    Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Pros
               • Iterative, Need-based development
               • Continuous Delivery
               • Work collaboratively on creating applications
                • Designers can style while devs create logic
               • Works from day one, immediate feedbacks
               • Open source and community-based
                                                   Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Cons
                         • Save code in SCM
                          • ... but SVN Application, Git Application
                         • Low integration with existing dev tools
                          • ... but XEclipse
                          • ... but WebDAV
                         • Not an official standard
                                                           Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Getting Started
                         •   Download XWiki from xwiki.org
                         •   Ask for a wiki on myxwiki.org
                             •   Non-profit orgs and individuals, no SLA
                             •   Used as a test platform by XWiki devs
                         •   XWiki Cloud
                             •   Free plan (5 users), paid plans
                         •   Contact a company supporting XWiki
                                                                   Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Q&A




                               Me
                                Copyright (c) Vincent Massol - 2012



Friday, October 12, 12
Vincent Massol
        vincent@xwiki.com
        skype: vmassol
        http://about.me/vmassol

        http://xwiki.org
        http://xwiki.com


                                  Copyright (c) Vincent Massol - 2012



Friday, October 12, 12

Mais conteúdo relacionado

Semelhante a XWiki: Developing simple apps quickly

A web development runtime platform based on the wiki paradigm
A web development runtime platform based on the wiki paradigmA web development runtime platform based on the wiki paradigm
A web development runtime platform based on the wiki paradigmXWiki
 
XWiki: A web development runtime platform
XWiki: A web development runtime platformXWiki: A web development runtime platform
XWiki: A web development runtime platformVincent Massol
 
XWiki: A web development runtime platform
XWiki: A web development runtime platformXWiki: A web development runtime platform
XWiki: A web development runtime platformXWiki
 
Pundit
PunditPundit
PunditNet7
 
XWiki Components Design Choices
XWiki Components Design ChoicesXWiki Components Design Choices
XWiki Components Design ChoicesVincent Massol
 
XWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army KnifeXWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army KnifeVincent Massol
 
Architecting large Node.js applications
Architecting large Node.js applicationsArchitecting large Node.js applications
Architecting large Node.js applicationsSergi Mansilla
 
Scalability 09262012
Scalability 09262012Scalability 09262012
Scalability 09262012Mike Miller
 
Rethink your architecture - Marten Deinum
Rethink your architecture - Marten DeinumRethink your architecture - Marten Deinum
Rethink your architecture - Marten DeinumNLJUG
 
Linked Data: the Entry Point for Worldwide Media Fragments Re-use and Copyrig...
Linked Data: the Entry Point for Worldwide Media Fragments Re-use and Copyrig...Linked Data: the Entry Point for Worldwide Media Fragments Re-use and Copyrig...
Linked Data: the Entry Point for Worldwide Media Fragments Re-use and Copyrig...Roberto García
 

Semelhante a XWiki: Developing simple apps quickly (12)

A web development runtime platform based on the wiki paradigm
A web development runtime platform based on the wiki paradigmA web development runtime platform based on the wiki paradigm
A web development runtime platform based on the wiki paradigm
 
XWiki: A web development runtime platform
XWiki: A web development runtime platformXWiki: A web development runtime platform
XWiki: A web development runtime platform
 
XWiki: A web development runtime platform
XWiki: A web development runtime platformXWiki: A web development runtime platform
XWiki: A web development runtime platform
 
Pundit
PunditPundit
Pundit
 
XWiki Components Design Choices
XWiki Components Design ChoicesXWiki Components Design Choices
XWiki Components Design Choices
 
XWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army KnifeXWiki: The web's Swiss Army Knife
XWiki: The web's Swiss Army Knife
 
Architecting large Node.js applications
Architecting large Node.js applicationsArchitecting large Node.js applications
Architecting large Node.js applications
 
Terrific Frontends
Terrific FrontendsTerrific Frontends
Terrific Frontends
 
Scalability 09262012
Scalability 09262012Scalability 09262012
Scalability 09262012
 
ActiveSupport
ActiveSupportActiveSupport
ActiveSupport
 
Rethink your architecture - Marten Deinum
Rethink your architecture - Marten DeinumRethink your architecture - Marten Deinum
Rethink your architecture - Marten Deinum
 
Linked Data: the Entry Point for Worldwide Media Fragments Re-use and Copyrig...
Linked Data: the Entry Point for Worldwide Media Fragments Re-use and Copyrig...Linked Data: the Entry Point for Worldwide Media Fragments Re-use and Copyrig...
Linked Data: the Entry Point for Worldwide Media Fragments Re-use and Copyrig...
 

Mais de Vincent Massol

XWiki Testing with TestContainers
XWiki Testing with TestContainersXWiki Testing with TestContainers
XWiki Testing with TestContainersVincent Massol
 
XWiki: The best wiki for developers
XWiki: The best wiki for developersXWiki: The best wiki for developers
XWiki: The best wiki for developersVincent Massol
 
Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Vincent Massol
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projectsVincent Massol
 
Configuration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainersConfiguration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainersVincent Massol
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projectsVincent Massol
 
What's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.xWhat's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.xVincent Massol
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality DashboardVincent Massol
 
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and SharepointXWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and SharepointVincent Massol
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality DashboardVincent Massol
 
Leading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectLeading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectVincent Massol
 
XWiki Status - July 2015
XWiki Status - July 2015XWiki Status - July 2015
XWiki Status - July 2015Vincent Massol
 
XWiki SAS development practices
XWiki SAS development practicesXWiki SAS development practices
XWiki SAS development practicesVincent Massol
 
XWiki SAS: An open source company
XWiki SAS: An open source companyXWiki SAS: An open source company
XWiki SAS: An open source companyVincent Massol
 
Implementing Quality on a Java Project
Implementing Quality on a Java ProjectImplementing Quality on a Java Project
Implementing Quality on a Java ProjectVincent Massol
 
Implementing Quality on Java projects (Short version)
Implementing Quality on Java projects (Short version)Implementing Quality on Java projects (Short version)
Implementing Quality on Java projects (Short version)Vincent Massol
 

Mais de Vincent Massol (20)

XWiki Testing with TestContainers
XWiki Testing with TestContainersXWiki Testing with TestContainers
XWiki Testing with TestContainers
 
XWiki: The best wiki for developers
XWiki: The best wiki for developersXWiki: The best wiki for developers
XWiki: The best wiki for developers
 
Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019Advanced Java Testing @ POSS 2019
Advanced Java Testing @ POSS 2019
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
 
Configuration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainersConfiguration Testing with Docker & TestContainers
Configuration Testing with Docker & TestContainers
 
Building XWiki
Building XWikiBuilding XWiki
Building XWiki
 
New types of tests for Java projects
New types of tests for Java projectsNew types of tests for Java projects
New types of tests for Java projects
 
What's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.xWhat's new in XWiki 9.x and 10.x
What's new in XWiki 9.x and 10.x
 
QDashboard 1.2
QDashboard 1.2QDashboard 1.2
QDashboard 1.2
 
Advanced Java Testing
Advanced Java TestingAdvanced Java Testing
Advanced Java Testing
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality Dashboard
 
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and SharepointXWiki: wiki collaboration as an alternative to Confluence and Sharepoint
XWiki: wiki collaboration as an alternative to Confluence and Sharepoint
 
Creating your own project's Quality Dashboard
Creating your own project's Quality DashboardCreating your own project's Quality Dashboard
Creating your own project's Quality Dashboard
 
Leading a Community-Driven Open Source Project
Leading a Community-Driven Open Source ProjectLeading a Community-Driven Open Source Project
Leading a Community-Driven Open Source Project
 
Developing XWiki
Developing XWikiDeveloping XWiki
Developing XWiki
 
XWiki Status - July 2015
XWiki Status - July 2015XWiki Status - July 2015
XWiki Status - July 2015
 
XWiki SAS development practices
XWiki SAS development practicesXWiki SAS development practices
XWiki SAS development practices
 
XWiki SAS: An open source company
XWiki SAS: An open source companyXWiki SAS: An open source company
XWiki SAS: An open source company
 
Implementing Quality on a Java Project
Implementing Quality on a Java ProjectImplementing Quality on a Java Project
Implementing Quality on a Java Project
 
Implementing Quality on Java projects (Short version)
Implementing Quality on Java projects (Short version)Implementing Quality on Java projects (Short version)
Implementing Quality on Java projects (Short version)
 

Último

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 

Último (20)

Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 

XWiki: Developing simple apps quickly

  • 1. XWiki Developing simple web applications quickly Copyright (c) Vincent Massol - 2012 Ocober 2012 Friday, October 12, 12
  • 2. Agenda • Architecture • Developing on XWiki • Usages • Pros and cons • QA Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 3. Architecture Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 4. XWiki Platform ... for developing (collaborative) web applications Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 5. Building an Application Runtime Traditional way Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 6. Building an Application Runtime Runtime XWiki way - Morphing! Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 7. Developing on XWiki a.k.a Morphing XWiki Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 8. Extensions Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 9. Adding Structure • Ability to associate arbitrary data to any wiki page • Enable structure in the wiki • Enable Application development • == Application wiki or Next Gen Wiki • Application Within Minutes Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 10. Classes - Objects Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 11. Class Sheets • A Document with script to display the content of Object(s) nicely • Automatic usage if defined in Class Document • Can be overridden on a page basis if needed Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 12. Skinning & Theming Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 13. Skin Extensions CSS JS == Grease Monkey Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 14. Scripting in Pages (1/2) {{groovy}} import groovy.json.* def url = "https://api.github.com/users/xwiki/repos".toURL().text def root = new JsonSlurper().parseText(url) println "|=Project|=Description|=Use Wiki?|=Use Issues?" root.each() { repo -> println "|[[${repo.name}>>http://github.com/xwiki/$ {repo.name}]]|${repo.description}|${repo.has_wiki}|$ {repo.has_issues}" } {{/groovy}} Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 15. Scripting in Pages (2/2) {{velocity}} #set ($xwql = "where doc.content like '%welcome%'") #foreach ($item in $services.query.xwql($xwql).execute()) #if ($request.confirm == "1") #set ($itemDoc = $xwiki.getDocument($item)) $itemDoc.setContent($itemDoc.getContent().replaceAll( "welcome", "bienvenue")) $itemDoc.save("Replaced bienvenue") * [[$item>>$item]] replaced! #else * [[$item>>$item]] #end #end [[Replace "welcome" by "bienvenue">>?confirm=1]] {{/velocity}} Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 16. UI Extensions Result Extension Point {{velocity}} ... #foreach($uix in $services.uix.getExtensions( 'org.xwiki.platform.panels.Applications')) #set($params = $uix.getParameters()) * [[image:$params.icon $params.label>>$params.target]] #end ... {{/velocity}} Extension Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 17. Wiki Macros Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 18. Components @Role public interface Macro {     List<Block> execute(); } @Component @Named("message") @Singleton public class MessageMacro implements Macro {    @Inject    private Execution execution;    @Inject    @Named("box")    private Macro boxMacro;    public List<Block> execute()    {       ...    } } META-INF/components.txt org.xwiki.rendering.internal.macro.message.MessageMacro + Wiki Components! Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 19. Usages Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 20. Multiple Usages Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 21. http://www.xwiki.org/xwiki/bin/view/Main/Screenshots Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 22. Long tail of Apps Excel of the Web Web’s Swiss army knife Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 23. Pros and Cons Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 24. Pros • Iterative, Need-based development • Continuous Delivery • Work collaboratively on creating applications • Designers can style while devs create logic • Works from day one, immediate feedbacks • Open source and community-based Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 25. Cons • Save code in SCM • ... but SVN Application, Git Application • Low integration with existing dev tools • ... but XEclipse • ... but WebDAV • Not an official standard Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 26. Getting Started • Download XWiki from xwiki.org • Ask for a wiki on myxwiki.org • Non-profit orgs and individuals, no SLA • Used as a test platform by XWiki devs • XWiki Cloud • Free plan (5 users), paid plans • Contact a company supporting XWiki Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 27. Q&A Me Copyright (c) Vincent Massol - 2012 Friday, October 12, 12
  • 28. Vincent Massol vincent@xwiki.com skype: vmassol http://about.me/vmassol http://xwiki.org http://xwiki.com Copyright (c) Vincent Massol - 2012 Friday, October 12, 12