SlideShare ist ein Scribd-Unternehmen logo
1 von 46
Downloaden Sie, um offline zu lesen
Advanced
                           ESUG 2012 Ghent
                             Aug 30, 2012



Thursday, August 30, 12
Seaside 2.x


                            Seaside



Thursday, August 30, 12
Seaside 3.x

                          Core        Javascript

                                 JQuery
                                          Session
                      Component

Thursday, August 30, 12
What is Seaside-Core
                     • “Seaside Meta”
                     • Web Framework Framework
                     • HTTP Abstraction
                     • Servlet API
                     • Rack
                     • WSGI
Thursday, August 30, 12
Why Seaside-Core

                     • portable (dialect and server)
                     • battle tested
                     • objects, not strings
                     • familiar objects
                     • negligible overhead

Thursday, August 30, 12
Seaside 3.x

                             Core


                          Component

Thursday, August 30, 12
Seaside 3.x

                               Core


                   Component            REST


Thursday, August 30, 12
Seaside 3.x

                             Core


             Component          REST    …


Thursday, August 30, 12
WARequestHandler

                           Request


                          Response
                                     RH



Thursday, August 30, 12
WARequestHandler

                          /conferences   /esug   /2012


                             RH          RH      RH



Thursday, August 30, 12
WARequestFilter



                                 RH



Thursday, August 30, 12
WASession 2.8
                     • current request
                     • jump to
                     • last continuation
                     • continuations
                     • monitor
                     •…
Thursday, August 30, 12
WASession 3.x

                     • continuations
                     • properties
                     • (document handlers)


Thursday, August 30, 12
WARequestContext

                     • request
                     • response
                     • handler stack


Thursday, August 30, 12
Request Handler Stack

                          1    2       3

                          1     1      1

                                2      2

                                       3




Thursday, August 30, 12
WAPathConsumer
                               /conferences/esug/2012/…




                          RH                RH            RH

                   /esug/2012/…           /2012/…         /…


Thursday, August 30, 12
WADispatcher


                          ‘conferences’ -> aRequestHandler
                             ‘sponsors’ -> aRequestHandler
                                    ‘…’ -> aRequestHanlder




Thursday, August 30, 12
WASeverAdapter
                                   provides template methods for converting
                                   provides start and stop hooks
                                   provides easy integration with ser ver manager UI
                                   you don’t have to use it
                                   sets up request context




      XXRequest                   WARequest

                            SA                                            RH
    XXRespone                     WARespone


                            WARequestContext

Thursday, August 30, 12
Frank
                          a micro framework inspired by Sinatra




Thursday, August 30, 12
Seaside-REST



Thursday, August 30, 12
Disclaimer


                     •    REST in this context simply means “pretty URLs”

                     •    pretty URLs for web services, not web applications

                     •    this will feel a little weird




Thursday, August 30, 12
index
                      <get>
                      ^ ‘Hello World’




Thursday, August 30, 12
index
                      <get>
                      <path: ‘index.html’>
                      ^ ‘Hello World’




Thursday, August 30, 12
indexHtml
                      <get>
                      <path: ‘index’>
                      <produces: ‘text/html’>
                      ^ ‘<h1>Hello World</h1>’

                  Accept: text/html




Thursday, August 30, 12
indexXml
                      <get>
                      <path: ‘index’>
                      <produces: ‘text/xml’>
                      ^ ‘<hello><world/></hello>’

                  Accept: text/xml




Thursday, August 30, 12
uploadXml
                      <post>
                      <consumes: ‘text/xml’>
                      …

                  Content-Type: text/xml




Thursday, August 30, 12
uploadCsv
                      <post>
                      <consumes: ‘text/csv’>
                      …

                  Content-Type: text/csv




Thursday, August 30, 12
getAllStartingAt: start limit: limit named: name
      <get>
      <path: ‘/{name}/_all_docs?start={start}&limit={limit}’>
      ...




Thursday, August 30, 12
#shouldCacheRoutes



Thursday, August 30, 12
WARestfulComponentFilter
   count: count
   	 <get>
   	 <path: '/{count}'>
   	 self startSessionWithRoot: (WACounter new
   	 	 count: count greaseInteger;
   	 	 yourself)




Thursday, August 30, 12
Data Binding

                     • XML or JSON canvas
                     • Magritte-XML
                     • Magritte-JSON


Thursday, August 30, 12
Dialects

                     • GemStone
                     • Pharo
                     • VAST


Thursday, August 30, 12
Seaside 3.1



Thursday, August 30, 12
Session Tracking Fully Customizable

                     • query fields
                     • cookie only
                     • cookie if supported, query field otherwise
                     • cookie for browser, IP for crawler
                     • SSL session id (*)
                     • path parameter (*)
Thursday, August 30, 12
Path Parameter

                     • /;_s=KAAWl0x3c6KLnN6Q
                     • doesn’t need to be hidden form parameter
                     • required by some load balancers


Thursday, August 30, 12
WAMain gone


                     • specify initial continuation
                     • subclass WASessionContinuation if you
                          used to subclass WAMain




Thursday, August 30, 12
WAPluggableActionContinuation



                     • replace WAActionPhaseContinuation
                          subclasses with
                          WACallbackProcessingActionContinuation
                          subclasses




Thursday, August 30, 12
JSON

                     • separate from JavaScript
                      • various subtle bugs fixed
                     • canvas API


Thursday, August 30, 12
Streaming Redone

                     •    on demand flushing

                     •    continuation that flushes after rendering </head>

                     •    better portability to other servers




Thursday, August 30, 12
HTML 5



                     •#multipleValuesCallback:


Thursday, August 30, 12
Document Handlers

                     • stored in session
                      • no longer stored alongside sessions
                     • _d


Thursday, August 30, 12
Other News
                     • Nick now part of core team
                     • experimental Pharo 2.0 support
                     • walkback should open at correct place in
                          VW
                     • platforms can implement optimized HTML
                          escaping


Thursday, August 30, 12
Help Wanted


                     • Morphic Control panel for Pharo 2.0



Thursday, August 30, 12
Seaside Sprint

                     • Friday at Vooruit
                     • Saturday at Camp location
                     • (Sunday)


Thursday, August 30, 12
Seaside Sprint Sponsors


                     • Reza Razavi
                     • 2Rivers


Thursday, August 30, 12
Links

                     •    https://github.com/marschall/esug-2012-presentation

                     •    http://ss3.gemstone.com/ss/frank

                     •    http://code.google.com/p/seaside/wiki/Seaside310Changelog

                     •    http://book.seaside.st/book/advanced/restful

                     •    http://code.google.com/p/seaside/wiki/SeasideRest




Thursday, August 30, 12

Weitere ähnliche Inhalte

Ähnlich wie Seaside 3.x Advanced ESUG 2012 Presentation

UX, UI, WTF
UX, UI, WTFUX, UI, WTF
UX, UI, WTFwcfay
 
Cassandra devoxx 2010
Cassandra devoxx 2010Cassandra devoxx 2010
Cassandra devoxx 2010jbellis
 
Clojure Reducers / clj-syd Aug 2012
Clojure Reducers / clj-syd Aug 2012Clojure Reducers / clj-syd Aug 2012
Clojure Reducers / clj-syd Aug 2012Leonardo Borges
 
Python &lt;3 Content systems
Python &lt;3 Content systemsPython &lt;3 Content systems
Python &lt;3 Content systemshenok80
 
Introduction to Vaadin 7
Introduction to Vaadin 7Introduction to Vaadin 7
Introduction to Vaadin 7lastrand
 
Performance & Responsive Web Design
Performance & Responsive Web DesignPerformance & Responsive Web Design
Performance & Responsive Web DesignZach Leatherman
 

Ähnlich wie Seaside 3.x Advanced ESUG 2012 Presentation (8)

UX, UI, WTF
UX, UI, WTFUX, UI, WTF
UX, UI, WTF
 
Node jsworkshop
Node jsworkshopNode jsworkshop
Node jsworkshop
 
Cassandra devoxx 2010
Cassandra devoxx 2010Cassandra devoxx 2010
Cassandra devoxx 2010
 
Clojure Reducers / clj-syd Aug 2012
Clojure Reducers / clj-syd Aug 2012Clojure Reducers / clj-syd Aug 2012
Clojure Reducers / clj-syd Aug 2012
 
Python &lt;3 Content systems
Python &lt;3 Content systemsPython &lt;3 Content systems
Python &lt;3 Content systems
 
Vaadin 7
Vaadin 7Vaadin 7
Vaadin 7
 
Introduction to Vaadin 7
Introduction to Vaadin 7Introduction to Vaadin 7
Introduction to Vaadin 7
 
Performance & Responsive Web Design
Performance & Responsive Web DesignPerformance & Responsive Web Design
Performance & Responsive Web Design
 

Mehr von ESUG

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingESUG
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in PharoESUG
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapESUG
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoESUG
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...ESUG
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsESUG
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6ESUG
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationESUG
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingESUG
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesESUG
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportESUG
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsESUG
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector TuningESUG
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseESUG
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FutureESUG
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the DebuggerESUG
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing ScoreESUG
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptESUG
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocESUG
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsESUG
 

Mehr von ESUG (20)

Workshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programmingWorkshop: Identifying concept inventories in agile programming
Workshop: Identifying concept inventories in agile programming
 
Technical documentation support in Pharo
Technical documentation support in PharoTechnical documentation support in Pharo
Technical documentation support in Pharo
 
The Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and RoadmapThe Pharo Debugger and Debugging tools: Advances and Roadmap
The Pharo Debugger and Debugging tools: Advances and Roadmap
 
Sequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in PharoSequence: Pipeline modelling in Pharo
Sequence: Pipeline modelling in Pharo
 
Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...Migration process from monolithic to micro frontend architecture in mobile ap...
Migration process from monolithic to micro frontend architecture in mobile ap...
 
Analyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early resultsAnalyzing Dart Language with Pharo: Report and early results
Analyzing Dart Language with Pharo: Report and early results
 
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
Transpiling Pharo Classes to JS ECMAScript 5 versus ECMAScript 6
 
A Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test GenerationA Unit Test Metamodel for Test Generation
A Unit Test Metamodel for Test Generation
 
Creating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic ProgrammingCreating Unit Tests Using Genetic Programming
Creating Unit Tests Using Genetic Programming
 
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution ModesThreaded-Execution and CPS Provide Smooth Switching Between Execution Modes
Threaded-Execution and CPS Provide Smooth Switching Between Execution Modes
 
Exploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience ReportExploring GitHub Actions through EGAD: An Experience Report
Exploring GitHub Actions through EGAD: An Experience Report
 
Pharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIsPharo: a reflective language A first systematic analysis of reflective APIs
Pharo: a reflective language A first systematic analysis of reflective APIs
 
Garbage Collector Tuning
Garbage Collector TuningGarbage Collector Tuning
Garbage Collector Tuning
 
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame CaseImproving Performance Through Object Lifetime Profiling: the DataFrame Case
Improving Performance Through Object Lifetime Profiling: the DataFrame Case
 
Pharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and FuturePharo DataFrame: Past, Present, and Future
Pharo DataFrame: Past, Present, and Future
 
thisContext in the Debugger
thisContext in the DebuggerthisContext in the Debugger
thisContext in the Debugger
 
Websockets for Fencing Score
Websockets for Fencing ScoreWebsockets for Fencing Score
Websockets for Fencing Score
 
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScriptShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
ShowUs: PharoJS.org Develop in Pharo, Run on JavaScript
 
Advanced Object- Oriented Design Mooc
Advanced Object- Oriented Design MoocAdvanced Object- Oriented Design Mooc
Advanced Object- Oriented Design Mooc
 
A New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and TransformationsA New Architecture Reconciling Refactorings and Transformations
A New Architecture Reconciling Refactorings and Transformations
 

Kürzlich hochgeladen

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
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
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
"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
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
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
 
"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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 

Kürzlich hochgeladen (20)

New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
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
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
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
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
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
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
"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
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
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
 
"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
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 

Seaside 3.x Advanced ESUG 2012 Presentation

  • 1. Advanced ESUG 2012 Ghent Aug 30, 2012 Thursday, August 30, 12
  • 2. Seaside 2.x Seaside Thursday, August 30, 12
  • 3. Seaside 3.x Core Javascript JQuery Session Component Thursday, August 30, 12
  • 4. What is Seaside-Core • “Seaside Meta” • Web Framework Framework • HTTP Abstraction • Servlet API • Rack • WSGI Thursday, August 30, 12
  • 5. Why Seaside-Core • portable (dialect and server) • battle tested • objects, not strings • familiar objects • negligible overhead Thursday, August 30, 12
  • 6. Seaside 3.x Core Component Thursday, August 30, 12
  • 7. Seaside 3.x Core Component REST Thursday, August 30, 12
  • 8. Seaside 3.x Core Component REST … Thursday, August 30, 12
  • 9. WARequestHandler Request Response RH Thursday, August 30, 12
  • 10. WARequestHandler /conferences /esug /2012 RH RH RH Thursday, August 30, 12
  • 11. WARequestFilter RH Thursday, August 30, 12
  • 12. WASession 2.8 • current request • jump to • last continuation • continuations • monitor •… Thursday, August 30, 12
  • 13. WASession 3.x • continuations • properties • (document handlers) Thursday, August 30, 12
  • 14. WARequestContext • request • response • handler stack Thursday, August 30, 12
  • 15. Request Handler Stack 1 2 3 1 1 1 2 2 3 Thursday, August 30, 12
  • 16. WAPathConsumer /conferences/esug/2012/… RH RH RH /esug/2012/… /2012/… /… Thursday, August 30, 12
  • 17. WADispatcher ‘conferences’ -> aRequestHandler ‘sponsors’ -> aRequestHandler ‘…’ -> aRequestHanlder Thursday, August 30, 12
  • 18. WASeverAdapter provides template methods for converting provides start and stop hooks provides easy integration with ser ver manager UI you don’t have to use it sets up request context XXRequest WARequest SA RH XXRespone WARespone WARequestContext Thursday, August 30, 12
  • 19. Frank a micro framework inspired by Sinatra Thursday, August 30, 12
  • 21. Disclaimer • REST in this context simply means “pretty URLs” • pretty URLs for web services, not web applications • this will feel a little weird Thursday, August 30, 12
  • 22. index <get> ^ ‘Hello World’ Thursday, August 30, 12
  • 23. index <get> <path: ‘index.html’> ^ ‘Hello World’ Thursday, August 30, 12
  • 24. indexHtml <get> <path: ‘index’> <produces: ‘text/html’> ^ ‘<h1>Hello World</h1>’ Accept: text/html Thursday, August 30, 12
  • 25. indexXml <get> <path: ‘index’> <produces: ‘text/xml’> ^ ‘<hello><world/></hello>’ Accept: text/xml Thursday, August 30, 12
  • 26. uploadXml <post> <consumes: ‘text/xml’> … Content-Type: text/xml Thursday, August 30, 12
  • 27. uploadCsv <post> <consumes: ‘text/csv’> … Content-Type: text/csv Thursday, August 30, 12
  • 28. getAllStartingAt: start limit: limit named: name <get> <path: ‘/{name}/_all_docs?start={start}&limit={limit}’> ... Thursday, August 30, 12
  • 30. WARestfulComponentFilter count: count <get> <path: '/{count}'> self startSessionWithRoot: (WACounter new count: count greaseInteger; yourself) Thursday, August 30, 12
  • 31. Data Binding • XML or JSON canvas • Magritte-XML • Magritte-JSON Thursday, August 30, 12
  • 32. Dialects • GemStone • Pharo • VAST Thursday, August 30, 12
  • 34. Session Tracking Fully Customizable • query fields • cookie only • cookie if supported, query field otherwise • cookie for browser, IP for crawler • SSL session id (*) • path parameter (*) Thursday, August 30, 12
  • 35. Path Parameter • /;_s=KAAWl0x3c6KLnN6Q • doesn’t need to be hidden form parameter • required by some load balancers Thursday, August 30, 12
  • 36. WAMain gone • specify initial continuation • subclass WASessionContinuation if you used to subclass WAMain Thursday, August 30, 12
  • 37. WAPluggableActionContinuation • replace WAActionPhaseContinuation subclasses with WACallbackProcessingActionContinuation subclasses Thursday, August 30, 12
  • 38. JSON • separate from JavaScript • various subtle bugs fixed • canvas API Thursday, August 30, 12
  • 39. Streaming Redone • on demand flushing • continuation that flushes after rendering </head> • better portability to other servers Thursday, August 30, 12
  • 40. HTML 5 •#multipleValuesCallback: Thursday, August 30, 12
  • 41. Document Handlers • stored in session • no longer stored alongside sessions • _d Thursday, August 30, 12
  • 42. Other News • Nick now part of core team • experimental Pharo 2.0 support • walkback should open at correct place in VW • platforms can implement optimized HTML escaping Thursday, August 30, 12
  • 43. Help Wanted • Morphic Control panel for Pharo 2.0 Thursday, August 30, 12
  • 44. Seaside Sprint • Friday at Vooruit • Saturday at Camp location • (Sunday) Thursday, August 30, 12
  • 45. Seaside Sprint Sponsors • Reza Razavi • 2Rivers Thursday, August 30, 12
  • 46. Links • https://github.com/marschall/esug-2012-presentation • http://ss3.gemstone.com/ss/frank • http://code.google.com/p/seaside/wiki/Seaside310Changelog • http://book.seaside.st/book/advanced/restful • http://code.google.com/p/seaside/wiki/SeasideRest Thursday, August 30, 12