SlideShare une entreprise Scribd logo
1  sur  44
Télécharger pour lire hors ligne
Modern PerlCommerce
             Past and Future
                         API
   Development & Deployment




       Modern PerlCommerce

           Stefan Hornburg (Racke)
            racke@linuxia.de


Pittsburgh Perl Workshop, 8th October 2011




                       racke   Modern PerlCommerce
Modern PerlCommerce
                                     Perl Buzzwords
                   Past and Future
                                     Modern Perl
                               API
                                     PerlCommerce Choices
         Development & Deployment



Nitesi




                             racke   Modern PerlCommerce
Modern PerlCommerce
                                             Perl Buzzwords
                           Past and Future
                                             Modern Perl
                                       API
                                             PerlCommerce Choices
                 Development & Deployment



Perl Buzzwords




      Marketing Perl
      Modern Perl
      Postmodern Perl




                                     racke   Modern PerlCommerce
Modern PerlCommerce
                                               Perl Buzzwords
                             Past and Future
                                               Modern Perl
                                         API
                                               PerlCommerce Choices
                   Development & Deployment



Modern Perl




      CPAN
      Best Practices
      Tests
      Separation (Modules, Plugins, Hooks, Templates)
      PSGI/Plack




                                       racke   Modern PerlCommerce
Modern PerlCommerce
                                             Perl Buzzwords
                           Past and Future
                                             Modern Perl
                                       API
                                             PerlCommerce Choices
                 Development & Deployment



PerlCommerce Choices




      Interchange
      Handel
      Agora
      Business::Cart::Generic




                                     racke   Modern PerlCommerce
Modern PerlCommerce
                            Past and Future   Past
                                        API   Future
                  Development & Deployment



Past




       1995 CGI
       1995 MiniVend
       1998 http://www.materialboerse.de/
       2001 Interchange




                                      racke   Modern PerlCommerce
Modern PerlCommerce
                            Past and Future   Past
                                        API   Future
                  Development & Deployment



Interchange Development




      Lot of things
      Small community
      Same codebase




                                      racke   Modern PerlCommerce
Modern PerlCommerce
                       Past and Future   Past
                                   API   Future
             Development & Deployment



Status quo




                                 racke   Modern PerlCommerce
Modern PerlCommerce
                        Past and Future   Past
                                    API   Future
              Development & Deployment



References




      Backcountry http://www.backcountry.com/
      FragnanceNet http://www.fragrancenet.com/




                                  racke   Modern PerlCommerce
Modern PerlCommerce
                   Past and Future   Past
                               API   Future
         Development & Deployment



Future




                             racke   Modern PerlCommerce
Modern PerlCommerce
                              Past and Future   Past
                                          API   Future
                    Development & Deployment



Principles




       KISS
       Components
       Agnostic
       Expressive




                                        racke   Modern PerlCommerce
Modern PerlCommerce
                              Past and Future   Past
                                          API   Future
                    Development & Deployment



Agnostic




   Cart
          Session
          DBI
          Webservice *




                                        racke   Modern PerlCommerce
Modern PerlCommerce
                            Past and Future   Past
                                        API   Future
                  Development & Deployment



Agnostic




   Account Manager
       DBI
       LDAP *
       OpenID *




                                      racke   Modern PerlCommerce
Modern PerlCommerce
                             Past and Future   Past
                                         API   Future
                   Development & Deployment



Agnostic




   Templating Engine
       Template::Toolkit
       Template::Flute




                                       racke   Modern PerlCommerce
Modern PerlCommerce
                             Past and Future   Past
                                         API   Future
                   Development & Deployment



Agnostic




   Web framework
       Catalyst
       Mojo
       Dancer




                                       racke   Modern PerlCommerce
Modern PerlCommerce
                           Past and Future   Past
                                       API   Future
                 Development & Deployment



Preferences




      Dancer
      Template::Flute
      DBI




                                     racke   Modern PerlCommerce
Modern PerlCommerce
                          Past and Future   Past
                                      API   Future
                Development & Deployment



Framework




     Dispatching requests
     Parameter parsing
     Session handling
     Template engine
     I18N




                                    racke   Modern PerlCommerce
Modern PerlCommerce
                          Past and Future   Past
                                      API   Future
                Development & Deployment



Extensions




      Bundles
      Plugins
      Hooks




                                    racke   Modern PerlCommerce
Modern PerlCommerce
                             Past and Future   Past
                                         API   Future
                   Development & Deployment



Features




      Navigation
      Cart
      Checkout
      Accounts




                                       racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                             Past and Future   Checkout
                                         API   Accounts and Access Control
                   Development & Deployment    Forms



Cart



       SKU, Name, Quantity, Price
       Price > 0
       Combines automatically
       Multiple carts
       Storage everywhere
       Price caching




                                       racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                                          Past and Future   Checkout
                                                      API   Accounts and Access Control
                                Development & Deployment    Forms



Nitesi::Cart Methods

   use Dancer : : P l u g i n : : N i t e s i ;

   c a r t −>add ( sku => ’POM253 ’ , name => ’ Pomelo ’ ,
           p r i c e => 3 . 0 0 , q u a n t i t y => 1 0 ) ;

   c a r t −>remove ( sku => ’POM253 ’ ) ;

   c a r t −>count ( ) ;

   c a r t −>c l e a r ( ) ;

   c a r t −> t o t a l ( ) ;

   c a r t −>s u b t o t a l ( ) ;



                                                    racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                               Past and Future   Checkout
                                           API   Accounts and Access Control
                     Development & Deployment    Forms



Everything is a Cart




       Saved Carts
       Wishlists
       Collections




                                         racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                                 Past and Future   Checkout
                                             API   Accounts and Access Control
                       Development & Deployment    Forms



Multiple Carts




   c a r t ( ’ w i s h l i s t ’ )−>add ( sku => ’ORA322 ’ , name => ’ Orange ’ ,
             p r i c e => 2 . 0 0 , q u a n t i t y => 5 ) ;




                                           racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                          Past and Future   Checkout
                                      API   Accounts and Access Control
                Development & Deployment    Forms



Cart Backends




      Session
      DBI




                                    racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                                Past and Future   Checkout
                                            API   Accounts and Access Control
                      Development & Deployment    Forms



Inventory Check




   MinQuantityField min_quantity
   MaxQuantityField inventory : q u a n t i t y




                                          racke   Modern PerlCommerce
Modern PerlCommerce       Cart
                                    Past and Future     Checkout
                                                API     Accounts and Access Control
                          Development & Deployment      Forms



Inventory Check Hook


   hook ’ b e f o r e _ c a r t _ a d d ’ => sub {
       my ( $ c a r t , $item ) = @_;
       my ( $ i n v e n t o r y ) ;

         $ i n v e n t o r y = query −> s e l e c t _ f i e l d ( t a b l e => ’ p r o d u c t s ’ ,
                                                                  f i e l d => ’ i n v e n t o r y ’ ,
                                                                  where => { sku => $item −>{sku } } ) ;

         i f ( $item −>{ q u a n t i t y } > $ i n v e n t o r y ) {
               $item −>{ e r r o r } = ’ Out o f s t o c k ’ ;
         }
   };




                                              racke     Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



Cart Hooks




      before_cart_add
      after_cart_add




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                          Past and Future   Checkout
                                      API   Accounts and Access Control
                Development & Deployment    Forms



Cart Hooks




      before_cart_remove
      after_cart_remove




                                    racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



Checkout




      Taxes
      Shipping
      Payment
      Invoice




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                         Past and Future   Checkout
                                     API   Accounts and Access Control
               Development & Deployment    Forms



Payment




     Business::OnlinePayment




                                   racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



Tax Modules on CPAN




      Business::Tax::Canada
      Business::CA::GST
      Business::Tax::VAT
      Business::Tax::VAT::Validation




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                          Past and Future   Checkout
                                      API   Accounts and Access Control
                Development & Deployment    Forms



Shipping




      Simple Shipping
      Crazy Shipping
      Shipping API




                                    racke   Modern PerlCommerce
Modern PerlCommerce      Cart
                                     Past and Future    Checkout
                                                 API    Accounts and Access Control
                           Development & Deployment     Forms



Costs




   $ c a r t −>a p p l y _ c o s t ( amount => 5 ) ;

   $ c a r t −>a p p l y _ c o s t ( amount => 0 . 1 9 , r e l a t i v e => 1 ) ;




                                               racke    Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



PDF Invoices




      HTML template
      Template::Flute::PDF




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                                 Past and Future   Checkout
                                             API   Accounts and Access Control
                       Development & Deployment    Forms



Accounts



   p o s t ’ / l o g i n ’ => sub {
          i f ( account −>l o g i n ( username => params ( ’ body ’ ) − >{username } ,
                                         password => params ( ’ body ’ ) − >{password } ) ) {
                 r e d i r e c t ’ / customerservice ’ ;
          }
          else {
                 redirect ’ / login ’ ;
          }
   };




                                           racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                                   Past and Future   Checkout
                                               API   Accounts and Access Control
                         Development & Deployment    Forms



Accounts




   g e t ’ / checkout ’ => sub {
         i f ( account −>a c l ( check => ’ s u b m i t _ o r d e r s ’ ) ) {
               r e t u r n t e m p l a t e ’ checkout ’ ;
         }

         redirect      ’ / access_denied ’ ;
   };




                                             racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



Account manager



      Account Providers
      Login/Logout
      Account Information
      Login status
      Forgot password
      Registration




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                             Past and Future   Checkout
                                         API   Accounts and Access Control
                   Development & Deployment    Forms



Account Provider




      DBI
      LDAP *
      Htpasswd *
      OpenID *
      OAuth *




                                       racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                           Past and Future   Checkout
                                       API   Accounts and Access Control
                 Development & Deployment    Forms



Access Control




      User
      Roles
      Permissions




                                     racke   Modern PerlCommerce
Modern PerlCommerce     Cart
                               Past and Future   Checkout
                                           API   Accounts and Access Control
                     Development & Deployment    Forms



Forms




        Display
        Validation
        Storage




                                         racke   Modern PerlCommerce
Modern PerlCommerce
                                                  Dancer
                                Past and Future
                                                  Contribution
                                            API
                                                  The End
                      Development & Deployment



Routes




         Categories
         Products
         Cart
         Checkout
         Login/Logout
         Customer Service




                                          racke   Modern PerlCommerce
Modern PerlCommerce
                                                      Dancer
                                   Past and Future
                                                      Contribution
                                               API
                                                      The End
                         Development & Deployment



Default Route

   g e t q r { / ( . ∗ ) } => sub {
         my ( $sku ) = s p l a t ;
         my $ p r o d u c t ;

        # check f o r e x i s t i n g p r o d u c t
        i f ( $ p r o d u c t = database −>q u i c k _ s e l e c t ( ’ p r o d u c t s ’ , { sku => $sku } ) )
              # display flypage
              template ’ flypage ’ , $product ;
        }
        else {
              # d i s p l a y n o t found page
              s t a t u s ’ not_found ’ ;
              f o r w a r d ’ 404 ’ ;
        }
   };


                                             racke    Modern PerlCommerce
Modern PerlCommerce
                                          Dancer
                        Past and Future
                                          Contribution
                                    API
                                          The End
              Development & Deployment



CPAN/GitHub


     http://search.cpan.org/dist/Nitesi/
     http://search.cpan.org/dist/Nitesi-DBI/
     http://search.cpan.org/dist/
     Dancer-Plugin-Nitesi/

     https://github.com/racke/Nitesi
     https://github.com/racke/Nitesi-DBI
     https:
     //github.com/racke/Dancer-Plugin-Nitesi



                                  racke   Modern PerlCommerce
Modern PerlCommerce
                                          Dancer
                        Past and Future
                                          Contribution
                                    API
                                          The End
              Development & Deployment



The End




  Slides: http://www.linuxia.de/talks/perlcommerce/
  perlcommerce-beamer.pdf
  Project: https://vsc.state.gov/




                                  racke   Modern PerlCommerce

Contenu connexe

Similaire à Modern PerlCommerce

Ruby on rails | iteron
Ruby on rails | iteronRuby on rails | iteron
Ruby on rails | iteronIteron Group
 
[2011-17-C-4] Heroku & database.com
[2011-17-C-4] Heroku & database.com[2011-17-C-4] Heroku & database.com
[2011-17-C-4] Heroku & database.comMitch Okamoto
 
Mobile and API identity – The New Challenges
Mobile and API identity – The New ChallengesMobile and API identity – The New Challenges
Mobile and API identity – The New ChallengesCA API Management
 
Trends in Web APIs Layer 7 API Management Workshop London
Trends in Web APIs Layer 7 API Management Workshop LondonTrends in Web APIs Layer 7 API Management Workshop London
Trends in Web APIs Layer 7 API Management Workshop LondonCA API Management
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The EnterpriseMatt Aimonetti
 
Laravel vs ASP.NET Framework .pdf
Laravel vs ASP.NET Framework .pdfLaravel vs ASP.NET Framework .pdf
Laravel vs ASP.NET Framework .pdfWPWeb Infotech
 
MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...
  MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...  MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...
MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...Spark Summit
 
Spark Summit East 2016 - MLeap Presentation
Spark Summit East 2016 -   MLeap PresentationSpark Summit East 2016 -   MLeap Presentation
Spark Summit East 2016 - MLeap PresentationMikhail Semeniuk
 
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)Benjamin Nowack
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Rack Lin
 
Techniques for Scaling the Netflix API - QCon SF
Techniques for Scaling the Netflix API - QCon SFTechniques for Scaling the Netflix API - QCon SF
Techniques for Scaling the Netflix API - QCon SFDaniel Jacobson
 
Top 15 Ruby on Rails (RoR) Gems by Code Garage Tech
Top 15 Ruby on Rails (RoR) Gems by Code Garage TechTop 15 Ruby on Rails (RoR) Gems by Code Garage Tech
Top 15 Ruby on Rails (RoR) Gems by Code Garage TechCode Garage Tech
 

Similaire à Modern PerlCommerce (20)

Ruby on rails
Ruby on railsRuby on rails
Ruby on rails
 
Practical Semantic Web
Practical Semantic WebPractical Semantic Web
Practical Semantic Web
 
Ruby on rails | iteron
Ruby on rails | iteronRuby on rails | iteron
Ruby on rails | iteron
 
API Best Practices
API Best PracticesAPI Best Practices
API Best Practices
 
Ruby on rails api Development case study
Ruby on rails api Development case studyRuby on rails api Development case study
Ruby on rails api Development case study
 
[2011-17-C-4] Heroku & database.com
[2011-17-C-4] Heroku & database.com[2011-17-C-4] Heroku & database.com
[2011-17-C-4] Heroku & database.com
 
Mobile and API identity – The New Challenges
Mobile and API identity – The New ChallengesMobile and API identity – The New Challenges
Mobile and API identity – The New Challenges
 
Trends in Web APIs Layer 7 API Management Workshop London
Trends in Web APIs Layer 7 API Management Workshop LondonTrends in Web APIs Layer 7 API Management Workshop London
Trends in Web APIs Layer 7 API Management Workshop London
 
Merb For The Enterprise
Merb For The EnterpriseMerb For The Enterprise
Merb For The Enterprise
 
Laravel vs ASP.NET Framework .pdf
Laravel vs ASP.NET Framework .pdfLaravel vs ASP.NET Framework .pdf
Laravel vs ASP.NET Framework .pdf
 
MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...
  MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...  MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...
MLLeap, or How to Productionize Data Science Workflows Using Spark by Mikha...
 
Spark Summit East 2016 - MLeap Presentation
Spark Summit East 2016 -   MLeap PresentationSpark Summit East 2016 -   MLeap Presentation
Spark Summit East 2016 - MLeap Presentation
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
RDF and SPARQL for PHP Developers (at New York Semantic Web Meetup)
 
SCIO : Apache Beam API
SCIO : Apache Beam APISCIO : Apache Beam API
SCIO : Apache Beam API
 
Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013Phalcon / Zephir Introduction at PHPConfTW2013
Phalcon / Zephir Introduction at PHPConfTW2013
 
Techniques for Scaling the Netflix API - QCon SF
Techniques for Scaling the Netflix API - QCon SFTechniques for Scaling the Netflix API - QCon SF
Techniques for Scaling the Netflix API - QCon SF
 
Varun-CV-J
Varun-CV-JVarun-CV-J
Varun-CV-J
 
MLeap: Release Spark ML Pipelines
MLeap: Release Spark ML PipelinesMLeap: Release Spark ML Pipelines
MLeap: Release Spark ML Pipelines
 
Top 15 Ruby on Rails (RoR) Gems by Code Garage Tech
Top 15 Ruby on Rails (RoR) Gems by Code Garage TechTop 15 Ruby on Rails (RoR) Gems by Code Garage Tech
Top 15 Ruby on Rails (RoR) Gems by Code Garage Tech
 

Dernier

Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncObject Automation
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintMahmoud Rabie
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostMatt Ray
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaborationbruanjhuli
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
20200723_insight_release_plan
20200723_insight_release_plan20200723_insight_release_plan
20200723_insight_release_planJamie (Taka) Wang
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 

Dernier (20)

Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
GenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation IncGenAI and AI GCC State of AI_Object Automation Inc
GenAI and AI GCC State of AI_Object Automation Inc
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Empowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership BlueprintEmpowering Africa's Next Generation: The AI Leadership Blueprint
Empowering Africa's Next Generation: The AI Leadership Blueprint
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCostKubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
KubeConEU24-Monitoring Kubernetes and Cloud Spend with OpenCost
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online CollaborationCOMPUTER 10: Lesson 7 - File Storage and Online Collaboration
COMPUTER 10: Lesson 7 - File Storage and Online Collaboration
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
20200723_insight_release_plan
20200723_insight_release_plan20200723_insight_release_plan
20200723_insight_release_plan
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 

Modern PerlCommerce

  • 1. Modern PerlCommerce Past and Future API Development & Deployment Modern PerlCommerce Stefan Hornburg (Racke) racke@linuxia.de Pittsburgh Perl Workshop, 8th October 2011 racke Modern PerlCommerce
  • 2. Modern PerlCommerce Perl Buzzwords Past and Future Modern Perl API PerlCommerce Choices Development & Deployment Nitesi racke Modern PerlCommerce
  • 3. Modern PerlCommerce Perl Buzzwords Past and Future Modern Perl API PerlCommerce Choices Development & Deployment Perl Buzzwords Marketing Perl Modern Perl Postmodern Perl racke Modern PerlCommerce
  • 4. Modern PerlCommerce Perl Buzzwords Past and Future Modern Perl API PerlCommerce Choices Development & Deployment Modern Perl CPAN Best Practices Tests Separation (Modules, Plugins, Hooks, Templates) PSGI/Plack racke Modern PerlCommerce
  • 5. Modern PerlCommerce Perl Buzzwords Past and Future Modern Perl API PerlCommerce Choices Development & Deployment PerlCommerce Choices Interchange Handel Agora Business::Cart::Generic racke Modern PerlCommerce
  • 6. Modern PerlCommerce Past and Future Past API Future Development & Deployment Past 1995 CGI 1995 MiniVend 1998 http://www.materialboerse.de/ 2001 Interchange racke Modern PerlCommerce
  • 7. Modern PerlCommerce Past and Future Past API Future Development & Deployment Interchange Development Lot of things Small community Same codebase racke Modern PerlCommerce
  • 8. Modern PerlCommerce Past and Future Past API Future Development & Deployment Status quo racke Modern PerlCommerce
  • 9. Modern PerlCommerce Past and Future Past API Future Development & Deployment References Backcountry http://www.backcountry.com/ FragnanceNet http://www.fragrancenet.com/ racke Modern PerlCommerce
  • 10. Modern PerlCommerce Past and Future Past API Future Development & Deployment Future racke Modern PerlCommerce
  • 11. Modern PerlCommerce Past and Future Past API Future Development & Deployment Principles KISS Components Agnostic Expressive racke Modern PerlCommerce
  • 12. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Cart Session DBI Webservice * racke Modern PerlCommerce
  • 13. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Account Manager DBI LDAP * OpenID * racke Modern PerlCommerce
  • 14. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Templating Engine Template::Toolkit Template::Flute racke Modern PerlCommerce
  • 15. Modern PerlCommerce Past and Future Past API Future Development & Deployment Agnostic Web framework Catalyst Mojo Dancer racke Modern PerlCommerce
  • 16. Modern PerlCommerce Past and Future Past API Future Development & Deployment Preferences Dancer Template::Flute DBI racke Modern PerlCommerce
  • 17. Modern PerlCommerce Past and Future Past API Future Development & Deployment Framework Dispatching requests Parameter parsing Session handling Template engine I18N racke Modern PerlCommerce
  • 18. Modern PerlCommerce Past and Future Past API Future Development & Deployment Extensions Bundles Plugins Hooks racke Modern PerlCommerce
  • 19. Modern PerlCommerce Past and Future Past API Future Development & Deployment Features Navigation Cart Checkout Accounts racke Modern PerlCommerce
  • 20. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Cart SKU, Name, Quantity, Price Price > 0 Combines automatically Multiple carts Storage everywhere Price caching racke Modern PerlCommerce
  • 21. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Nitesi::Cart Methods use Dancer : : P l u g i n : : N i t e s i ; c a r t −>add ( sku => ’POM253 ’ , name => ’ Pomelo ’ , p r i c e => 3 . 0 0 , q u a n t i t y => 1 0 ) ; c a r t −>remove ( sku => ’POM253 ’ ) ; c a r t −>count ( ) ; c a r t −>c l e a r ( ) ; c a r t −> t o t a l ( ) ; c a r t −>s u b t o t a l ( ) ; racke Modern PerlCommerce
  • 22. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Everything is a Cart Saved Carts Wishlists Collections racke Modern PerlCommerce
  • 23. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Multiple Carts c a r t ( ’ w i s h l i s t ’ )−>add ( sku => ’ORA322 ’ , name => ’ Orange ’ , p r i c e => 2 . 0 0 , q u a n t i t y => 5 ) ; racke Modern PerlCommerce
  • 24. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Cart Backends Session DBI racke Modern PerlCommerce
  • 25. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Inventory Check MinQuantityField min_quantity MaxQuantityField inventory : q u a n t i t y racke Modern PerlCommerce
  • 26. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Inventory Check Hook hook ’ b e f o r e _ c a r t _ a d d ’ => sub { my ( $ c a r t , $item ) = @_; my ( $ i n v e n t o r y ) ; $ i n v e n t o r y = query −> s e l e c t _ f i e l d ( t a b l e => ’ p r o d u c t s ’ , f i e l d => ’ i n v e n t o r y ’ , where => { sku => $item −>{sku } } ) ; i f ( $item −>{ q u a n t i t y } > $ i n v e n t o r y ) { $item −>{ e r r o r } = ’ Out o f s t o c k ’ ; } }; racke Modern PerlCommerce
  • 27. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Cart Hooks before_cart_add after_cart_add racke Modern PerlCommerce
  • 28. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Cart Hooks before_cart_remove after_cart_remove racke Modern PerlCommerce
  • 29. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Checkout Taxes Shipping Payment Invoice racke Modern PerlCommerce
  • 30. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Payment Business::OnlinePayment racke Modern PerlCommerce
  • 31. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Tax Modules on CPAN Business::Tax::Canada Business::CA::GST Business::Tax::VAT Business::Tax::VAT::Validation racke Modern PerlCommerce
  • 32. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Shipping Simple Shipping Crazy Shipping Shipping API racke Modern PerlCommerce
  • 33. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Costs $ c a r t −>a p p l y _ c o s t ( amount => 5 ) ; $ c a r t −>a p p l y _ c o s t ( amount => 0 . 1 9 , r e l a t i v e => 1 ) ; racke Modern PerlCommerce
  • 34. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms PDF Invoices HTML template Template::Flute::PDF racke Modern PerlCommerce
  • 35. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Accounts p o s t ’ / l o g i n ’ => sub { i f ( account −>l o g i n ( username => params ( ’ body ’ ) − >{username } , password => params ( ’ body ’ ) − >{password } ) ) { r e d i r e c t ’ / customerservice ’ ; } else { redirect ’ / login ’ ; } }; racke Modern PerlCommerce
  • 36. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Accounts g e t ’ / checkout ’ => sub { i f ( account −>a c l ( check => ’ s u b m i t _ o r d e r s ’ ) ) { r e t u r n t e m p l a t e ’ checkout ’ ; } redirect ’ / access_denied ’ ; }; racke Modern PerlCommerce
  • 37. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Account manager Account Providers Login/Logout Account Information Login status Forgot password Registration racke Modern PerlCommerce
  • 38. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Account Provider DBI LDAP * Htpasswd * OpenID * OAuth * racke Modern PerlCommerce
  • 39. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Access Control User Roles Permissions racke Modern PerlCommerce
  • 40. Modern PerlCommerce Cart Past and Future Checkout API Accounts and Access Control Development & Deployment Forms Forms Display Validation Storage racke Modern PerlCommerce
  • 41. Modern PerlCommerce Dancer Past and Future Contribution API The End Development & Deployment Routes Categories Products Cart Checkout Login/Logout Customer Service racke Modern PerlCommerce
  • 42. Modern PerlCommerce Dancer Past and Future Contribution API The End Development & Deployment Default Route g e t q r { / ( . ∗ ) } => sub { my ( $sku ) = s p l a t ; my $ p r o d u c t ; # check f o r e x i s t i n g p r o d u c t i f ( $ p r o d u c t = database −>q u i c k _ s e l e c t ( ’ p r o d u c t s ’ , { sku => $sku } ) ) # display flypage template ’ flypage ’ , $product ; } else { # d i s p l a y n o t found page s t a t u s ’ not_found ’ ; f o r w a r d ’ 404 ’ ; } }; racke Modern PerlCommerce
  • 43. Modern PerlCommerce Dancer Past and Future Contribution API The End Development & Deployment CPAN/GitHub http://search.cpan.org/dist/Nitesi/ http://search.cpan.org/dist/Nitesi-DBI/ http://search.cpan.org/dist/ Dancer-Plugin-Nitesi/ https://github.com/racke/Nitesi https://github.com/racke/Nitesi-DBI https: //github.com/racke/Dancer-Plugin-Nitesi racke Modern PerlCommerce
  • 44. Modern PerlCommerce Dancer Past and Future Contribution API The End Development & Deployment The End Slides: http://www.linuxia.de/talks/perlcommerce/ perlcommerce-beamer.pdf Project: https://vsc.state.gov/ racke Modern PerlCommerce