SlideShare ist ein Scribd-Unternehmen logo
1 von 16
Desperately Seeking…
a lightweight Perl web framework
                               Peter Edwards




                                                                   1
   Desperately seeking... a lightweight Perl web framework   12/22/12
Introduction
 Peter   Edwards ~ background


Subject
 Explain  about the processes and decision
   making involved in assessing, selecting
   and using a Perl web framework


                                                            2
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Aims
 Learn what frameworks are out there
 Technical considerations
 Business tools for decision-making


   Audience: What is your background and
    interest?


                                                            3
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Topics
 Define the problem
 Example requirements
 Attributes of frameworks
 Business decision making tools
 Architecture
 Application components
 Perl application frameworks
 Roll your own
 Summary



                                                            4
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Define the Problem
 Why do you need a web app?
 What functionality / how complex?
   no. screens, other features, e.g. search engine, integration to other
   apps/components/company infrastructure, server platform
 Business         setting
   Project length, size; Developer expertise, skill sets; Integration to
   network, database type, existing frameworks e.g. ADS
   authentication; Capacity plan - no. of users and required
   performance




                                                            5
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Example
http://merlinfootball.com
 Components
   Flash front end, sending XML transactions to
   Perl back end
   Perl XHTML admin system
 Elements
   Huge volume of users and transactions
   Streaming video
   Picture upload and approval to gallery
   FAQ submission, approval and editing into FAQ
   list
                                                            6
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Attributes of Frameworks
 Size -> complexity
 Learning curve
 Vertical vs. horizontal
 Functionality, flexibility
 Monotheistic/"One True Way" vs. agnostic
 Increased power, reduced performance
 Cost of testing new code = 50% of time
 By extension DRY KISS

                                                            7
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Business Decision Making Tools
The point of business
   Increased shareholder value - cash
William of Occam, 14th century logician and Franciscan friar
   entia non sunt multiplicanda praeter necessitatem
   entities should not be multiplied beyond necessity
   "All things being equal, the simplest solution tends to be the best one.“
   It often happens that the best explanation is much more complicated than the
   simplest possible explanation because it requires fewer assumptions.
Pareto Principle, by Joseph M. Juran named after Vilfredo Pareto, Italian
   economist
   "for many phenomena, 80% of the consequences stem from 20% of the
   causes“
   -- en.wikipedia.org
Cost Benefit Analysis
   Estimate days for development
   Estimate hidden costs and benefits e.g. of more stable framework
   Cost comparison -> decision
   Perfection vs. pragmatism
                                                            8
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Architecture I
 Web     Protocol
   HTTP request/response
   URI, REST, URL parameters
   http://server.com/client/view/FRED?view=xml&tabs=al
   Web 2.0, AJAX
 Web     Server
   Apache, IIS, lighttpd
   CGI/mod_perl, FastCGI
 Controller     Processing
   Apache registry style stacked phase handlers
   MVC Model View Controller
   Single entry point vs. separate CGI
                                                            9
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Architecture II
 Session
   CGI::Session
   Apache::Session
   Catalyst::Plugin::Session -> Cache::FastMMap
 Security
   Authentication
   Group permission roles
   HTML field and SQL field encoding
 Database    layer
   Direct DBI
   Simple Class::DBI
   ORM Object Relational Mapper DBIx::Class Rose::DB
   Performance considerations - DBI 10-100x faster
   Data object attributes - data dictionary - screen dictionary
                                                           10
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Architecture III
 Templates
   Template::Toolkit (TT2)
       variable merge, not too complex,
       encourages using Perl in app modules
   HTML::Mason – inline code
   Personal preference; understandable by Web designers
   XHTML, accessibility, internationalisation
   Locale::Maketext
   Form handling, CRUD from db object, validation
   Data::FormValidator
   Rich components http://script.aculo.us/ http://
   dojotoolkit.org/
 Testing
   module unit test, business data object tests,
   Javascript/browser compatability checks
   Test::More Test::WWW::Mechanize
   Test::WWW::Selenium
                                                           11
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Application Components
Pre-built      components
  save time in short term on testing; may
  cost more long term; integration costs
  PHP::Session
Language Repository Template Component
  Perl     CPAN        TT2         Bricolage
  PHP      PEAR        Smarty      CMSMS
  Python Built-in Clearsilver Trac

                                                           12
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Perl Application Frameworks
   CGI::Application + CGI::Session lightweight, easy to use, reliable, full
    control, open
    Watch out for CGI::Builder, based on CGI::App but used to have
    Makefile.PL that downloaded and eval'd code, also bizarre "Perlish" coding
    style
    ;   use 5.006_001
    ;   use Carp
    ;   $Carp::Internal{+__PACKAGE__}++
    ;   $Carp::Internal{__PACKAGE__.'::_'}++   ; use IO::Util
   CGI::Framework
  fixed - glue between HTML::Template, CGI::Session, CGI,
  Locale::Maketext last release 11-Oct-2005
 Jifty one true way: database mapper, template, web services, AJAX toolkit,
  handlers for FastCGI continuations, form-based dispatch "Jifty is the only
  web application framework that comes with a pony“
 Gantry + Bigtop Apache/mod_perl, MVC Bigtop - web application data
  language processor, app generator
 OpenInteract + SPOPS Complex, slow, powerful, CMS-oriented
  permissions last release 18-Mar-2005
   Catalyst
  agnostic, MVC, complex, magic, powerful, slow (third time in NEXT/C3
  OO extension), well tested Works well with DBIx::Class and TT2; can also
  use Class:DBI, HTML::Mason Many plugins for auth, XML etc.
 Maypole (ancestor of Catalyst) similar approach Class::DBI, TT2


                                                            13
 Desperately seeking... a lightweight Perl web framework
                                                     12/22/12
Roll Your Own
 "Not  invented here" syndrome, AKA submitting
  a module to CPAN with "Lite" or "Plus" in the
  name.
 Can base on CGI::Application + CGI::Session
 Or write one yourself. Easier than you'd think.
  Here's one written in a week, not pretty but
  delivered a project delivered fast and on time:
  http://perl.dragonstaff.co.uk/app.zip


                                                           14
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Summary
Processes and decision making
 requirements
 business context
 CBA decision basis
 technical considerations, architecture,
  constraints and features
 application components
 Perl application frameworks

                                                           15
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12
Where to Get More Information
CPAN http://search.cpan.org
Books


 Any     Questions

These slides are at
 http://perl.dragonstaff.co.uk/

                                                           16
Desperately seeking... a lightweight Perl web framework
                                                    12/22/12

Weitere ähnliche Inhalte

Was ist angesagt?

JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...0xdaryl
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Ryan Cuprak
 
What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)Pavel Bucek
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Edward Burns
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stackJohan Edstrom
 
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLHTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLUlf Wendel
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules uploadRyan Cuprak
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafIoan Eugen Stan
 
XML and Web Services with Groovy
XML and Web Services with GroovyXML and Web Services with Groovy
XML and Web Services with GroovyPaul King
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsDavid Delabassee
 
Tricks and Tips With NIO Using the Grizzly Framework
Tricks and Tips With NIO Using the Grizzly FrameworkTricks and Tips With NIO Using the Grizzly Framework
Tricks and Tips With NIO Using the Grizzly Frameworkelliando dias
 
PHP on IBM i Tutorial
PHP on IBM i TutorialPHP on IBM i Tutorial
PHP on IBM i TutorialZendCon
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015Pavel Bucek
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the restgeorge.james
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeansRyan Cuprak
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetNormandy JUG
 

Was ist angesagt? (20)

JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
JavaOne 2015 CON7547 "Beyond the Coffee Cup: Leveraging Java Runtime Technolo...
 
Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)Why jakarta ee matters (ConFoo 2021)
Why jakarta ee matters (ConFoo 2021)
 
What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)What's next for Java API for WebSocket (JSR 356)
What's next for Java API for WebSocket (JSR 356)
 
Jetty Vs Tomcat
Jetty Vs TomcatJetty Vs Tomcat
Jetty Vs Tomcat
 
Grizzly 20080925 V2
Grizzly 20080925 V2Grizzly 20080925 V2
Grizzly 20080925 V2
 
Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015Servlet 4.0 at GeekOut 2015
Servlet 4.0 at GeekOut 2015
 
Succeding with the Apache SOA stack
Succeding with the Apache SOA stackSucceding with the Apache SOA stack
Succeding with the Apache SOA stack
 
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQLHTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
HTTP, JSON, JavaScript, Map&Reduce built-in to MySQL
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules upload
 
Modular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache KarafModular Java applications with OSGi on Apache Karaf
Modular Java applications with OSGi on Apache Karaf
 
XML and Web Services with Groovy
XML and Web Services with GroovyXML and Web Services with Groovy
XML and Web Services with Groovy
 
Serverless Java Challenges & Triumphs
Serverless Java Challenges & TriumphsServerless Java Challenges & Triumphs
Serverless Java Challenges & Triumphs
 
Tricks and Tips With NIO Using the Grizzly Framework
Tricks and Tips With NIO Using the Grizzly FrameworkTricks and Tips With NIO Using the Grizzly Framework
Tricks and Tips With NIO Using the Grizzly Framework
 
PHP on IBM i Tutorial
PHP on IBM i TutorialPHP on IBM i Tutorial
PHP on IBM i Tutorial
 
WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015WebSocket in Enterprise Applications 2015
WebSocket in Enterprise Applications 2015
 
Web Development Environments: Choose the best or go with the rest
Web Development Environments:  Choose the best or go with the restWeb Development Environments:  Choose the best or go with the rest
Web Development Environments: Choose the best or go with the rest
 
Karaf ee-apachecon eu-2012
Karaf ee-apachecon eu-2012Karaf ee-apachecon eu-2012
Karaf ee-apachecon eu-2012
 
Open Social Summit Korea
Open Social Summit KoreaOpen Social Summit Korea
Open Social Summit Korea
 
Node.js Development with Apache NetBeans
Node.js Development with Apache NetBeansNode.js Development with Apache NetBeans
Node.js Development with Apache NetBeans
 
Apache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume NodetApache, osgi and karaf par Guillaume Nodet
Apache, osgi and karaf par Guillaume Nodet
 

Ähnlich wie Desperately seeking a lightweight Perl framework

A Tour of Ruby On Rails
A Tour of Ruby On RailsA Tour of Ruby On Rails
A Tour of Ruby On RailsDavid Keener
 
Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009Steven Evatt
 
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012Patrick Chanezon
 
Is 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingIs 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingPhil Wilkins
 
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011camp_drupal_ua
 
DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)dpc
 
Kubernetes Summit 2019 - Harden Your Kubernetes Cluster
Kubernetes Summit 2019 - Harden Your Kubernetes ClusterKubernetes Summit 2019 - Harden Your Kubernetes Cluster
Kubernetes Summit 2019 - Harden Your Kubernetes Clustersmalltown
 
Php Frameworks
Php FrameworksPhp Frameworks
Php FrameworksRyan Davis
 
Power features in .NET 4: Investigating the features of .NET 4 which you don’...
Power features in .NET 4: Investigating the features of .NET 4 which you don’...Power features in .NET 4: Investigating the features of .NET 4 which you don’...
Power features in .NET 4: Investigating the features of .NET 4 which you don’...Robert MacLean
 
Speeding up your Drupal site
Speeding up your Drupal siteSpeeding up your Drupal site
Speeding up your Drupal siteRonan Berder
 
Building Low Cost Scalable Web Applications Tools & Techniques
Building Low Cost Scalable Web Applications   Tools & TechniquesBuilding Low Cost Scalable Web Applications   Tools & Techniques
Building Low Cost Scalable Web Applications Tools & Techniquesrramesh
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftSerhat Dirik
 
Principles of MVC for Rails Developers
Principles of MVC for Rails DevelopersPrinciples of MVC for Rails Developers
Principles of MVC for Rails DevelopersEdureka!
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on RailsViridians
 
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...Felix Gessert
 

Ähnlich wie Desperately seeking a lightweight Perl framework (20)

A Tour of Ruby On Rails
A Tour of Ruby On RailsA Tour of Ruby On Rails
A Tour of Ruby On Rails
 
Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009Cloud Computing for Barcamp NOLA 2009
Cloud Computing for Barcamp NOLA 2009
 
Cloud foundry and openstackcloud
Cloud foundry and openstackcloudCloud foundry and openstackcloud
Cloud foundry and openstackcloud
 
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
 
Is 12 Factor App Right About Logging
Is 12 Factor App Right About LoggingIs 12 Factor App Right About Logging
Is 12 Factor App Right About Logging
 
Ruby On Rails
Ruby On RailsRuby On Rails
Ruby On Rails
 
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
Dennis Povshedny.Mediamosa intro.DrupalCamp Kyiv 2011
 
DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)DPC2007 Zend Framework (Gaylord Aulke)
DPC2007 Zend Framework (Gaylord Aulke)
 
.net Framework
.net Framework.net Framework
.net Framework
 
Kubernetes Summit 2019 - Harden Your Kubernetes Cluster
Kubernetes Summit 2019 - Harden Your Kubernetes ClusterKubernetes Summit 2019 - Harden Your Kubernetes Cluster
Kubernetes Summit 2019 - Harden Your Kubernetes Cluster
 
Php Frameworks
Php FrameworksPhp Frameworks
Php Frameworks
 
Power features in .NET 4: Investigating the features of .NET 4 which you don’...
Power features in .NET 4: Investigating the features of .NET 4 which you don’...Power features in .NET 4: Investigating the features of .NET 4 which you don’...
Power features in .NET 4: Investigating the features of .NET 4 which you don’...
 
Durkee apache 2009_v7
Durkee apache 2009_v7Durkee apache 2009_v7
Durkee apache 2009_v7
 
Speeding up your Drupal site
Speeding up your Drupal siteSpeeding up your Drupal site
Speeding up your Drupal site
 
Building Low Cost Scalable Web Applications Tools & Techniques
Building Low Cost Scalable Web Applications   Tools & TechniquesBuilding Low Cost Scalable Web Applications   Tools & Techniques
Building Low Cost Scalable Web Applications Tools & Techniques
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShift
 
Lamp Zend Security
Lamp Zend SecurityLamp Zend Security
Lamp Zend Security
 
Principles of MVC for Rails Developers
Principles of MVC for Rails DevelopersPrinciples of MVC for Rails Developers
Principles of MVC for Rails Developers
 
Viridians on Rails
Viridians on RailsViridians on Rails
Viridians on Rails
 
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
Building a Global-Scale Multi-Tenant Cloud Platform on AWS and Docker: Lesson...
 

Mehr von Peter Edwards

Enhancing engagement through content
Enhancing engagement through contentEnhancing engagement through content
Enhancing engagement through contentPeter Edwards
 
BBC World Service Twitter OAuth Perl
BBC World Service Twitter OAuth PerlBBC World Service Twitter OAuth Perl
BBC World Service Twitter OAuth PerlPeter Edwards
 
Perl exceptions lightning talk
Perl exceptions lightning talkPerl exceptions lightning talk
Perl exceptions lightning talkPeter Edwards
 
Role based access control
Role based access controlRole based access control
Role based access controlPeter Edwards
 
Getting started with Catalyst and extjs
Getting started with Catalyst and extjsGetting started with Catalyst and extjs
Getting started with Catalyst and extjsPeter Edwards
 
Real world cross-platform testing
Real world cross-platform testingReal world cross-platform testing
Real world cross-platform testingPeter Edwards
 
Open Source for Government - PSEICT Conference - British Council Case Study u...
Open Source for Government - PSEICT Conference - British Council Case Study u...Open Source for Government - PSEICT Conference - British Council Case Study u...
Open Source for Government - PSEICT Conference - British Council Case Study u...Peter Edwards
 

Mehr von Peter Edwards (8)

Enhancing engagement through content
Enhancing engagement through contentEnhancing engagement through content
Enhancing engagement through content
 
Twitter oauth
Twitter oauthTwitter oauth
Twitter oauth
 
BBC World Service Twitter OAuth Perl
BBC World Service Twitter OAuth PerlBBC World Service Twitter OAuth Perl
BBC World Service Twitter OAuth Perl
 
Perl exceptions lightning talk
Perl exceptions lightning talkPerl exceptions lightning talk
Perl exceptions lightning talk
 
Role based access control
Role based access controlRole based access control
Role based access control
 
Getting started with Catalyst and extjs
Getting started with Catalyst and extjsGetting started with Catalyst and extjs
Getting started with Catalyst and extjs
 
Real world cross-platform testing
Real world cross-platform testingReal world cross-platform testing
Real world cross-platform testing
 
Open Source for Government - PSEICT Conference - British Council Case Study u...
Open Source for Government - PSEICT Conference - British Council Case Study u...Open Source for Government - PSEICT Conference - British Council Case Study u...
Open Source for Government - PSEICT Conference - British Council Case Study u...
 

Kürzlich hochgeladen

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Kürzlich hochgeladen (20)

IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

Desperately seeking a lightweight Perl framework

  • 1. Desperately Seeking… a lightweight Perl web framework Peter Edwards 1 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 2. Introduction  Peter Edwards ~ background Subject  Explain about the processes and decision making involved in assessing, selecting and using a Perl web framework 2 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 3. Aims  Learn what frameworks are out there  Technical considerations  Business tools for decision-making  Audience: What is your background and interest? 3 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 4. Topics  Define the problem  Example requirements  Attributes of frameworks  Business decision making tools  Architecture  Application components  Perl application frameworks  Roll your own  Summary 4 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 5. Define the Problem  Why do you need a web app?  What functionality / how complex? no. screens, other features, e.g. search engine, integration to other apps/components/company infrastructure, server platform  Business setting Project length, size; Developer expertise, skill sets; Integration to network, database type, existing frameworks e.g. ADS authentication; Capacity plan - no. of users and required performance 5 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 6. Example http://merlinfootball.com  Components Flash front end, sending XML transactions to Perl back end Perl XHTML admin system  Elements Huge volume of users and transactions Streaming video Picture upload and approval to gallery FAQ submission, approval and editing into FAQ list 6 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 7. Attributes of Frameworks  Size -> complexity  Learning curve  Vertical vs. horizontal  Functionality, flexibility  Monotheistic/"One True Way" vs. agnostic  Increased power, reduced performance  Cost of testing new code = 50% of time  By extension DRY KISS 7 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 8. Business Decision Making Tools The point of business Increased shareholder value - cash William of Occam, 14th century logician and Franciscan friar entia non sunt multiplicanda praeter necessitatem entities should not be multiplied beyond necessity "All things being equal, the simplest solution tends to be the best one.“ It often happens that the best explanation is much more complicated than the simplest possible explanation because it requires fewer assumptions. Pareto Principle, by Joseph M. Juran named after Vilfredo Pareto, Italian economist "for many phenomena, 80% of the consequences stem from 20% of the causes“ -- en.wikipedia.org Cost Benefit Analysis Estimate days for development Estimate hidden costs and benefits e.g. of more stable framework Cost comparison -> decision Perfection vs. pragmatism 8 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 9. Architecture I  Web Protocol HTTP request/response URI, REST, URL parameters http://server.com/client/view/FRED?view=xml&tabs=al Web 2.0, AJAX  Web Server Apache, IIS, lighttpd CGI/mod_perl, FastCGI  Controller Processing Apache registry style stacked phase handlers MVC Model View Controller Single entry point vs. separate CGI 9 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 10. Architecture II  Session CGI::Session Apache::Session Catalyst::Plugin::Session -> Cache::FastMMap  Security Authentication Group permission roles HTML field and SQL field encoding  Database layer Direct DBI Simple Class::DBI ORM Object Relational Mapper DBIx::Class Rose::DB Performance considerations - DBI 10-100x faster Data object attributes - data dictionary - screen dictionary 10 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 11. Architecture III  Templates Template::Toolkit (TT2) variable merge, not too complex, encourages using Perl in app modules HTML::Mason – inline code Personal preference; understandable by Web designers XHTML, accessibility, internationalisation Locale::Maketext Form handling, CRUD from db object, validation Data::FormValidator Rich components http://script.aculo.us/ http:// dojotoolkit.org/  Testing module unit test, business data object tests, Javascript/browser compatability checks Test::More Test::WWW::Mechanize Test::WWW::Selenium 11 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 12. Application Components Pre-built components save time in short term on testing; may cost more long term; integration costs PHP::Session Language Repository Template Component Perl CPAN TT2 Bricolage PHP PEAR Smarty CMSMS Python Built-in Clearsilver Trac 12 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 13. Perl Application Frameworks  CGI::Application + CGI::Session lightweight, easy to use, reliable, full control, open Watch out for CGI::Builder, based on CGI::App but used to have Makefile.PL that downloaded and eval'd code, also bizarre "Perlish" coding style ; use 5.006_001 ; use Carp ; $Carp::Internal{+__PACKAGE__}++ ; $Carp::Internal{__PACKAGE__.'::_'}++ ; use IO::Util  CGI::Framework fixed - glue between HTML::Template, CGI::Session, CGI, Locale::Maketext last release 11-Oct-2005  Jifty one true way: database mapper, template, web services, AJAX toolkit, handlers for FastCGI continuations, form-based dispatch "Jifty is the only web application framework that comes with a pony“  Gantry + Bigtop Apache/mod_perl, MVC Bigtop - web application data language processor, app generator  OpenInteract + SPOPS Complex, slow, powerful, CMS-oriented permissions last release 18-Mar-2005  Catalyst agnostic, MVC, complex, magic, powerful, slow (third time in NEXT/C3 OO extension), well tested Works well with DBIx::Class and TT2; can also use Class:DBI, HTML::Mason Many plugins for auth, XML etc.  Maypole (ancestor of Catalyst) similar approach Class::DBI, TT2 13 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 14. Roll Your Own  "Not invented here" syndrome, AKA submitting a module to CPAN with "Lite" or "Plus" in the name.  Can base on CGI::Application + CGI::Session  Or write one yourself. Easier than you'd think. Here's one written in a week, not pretty but delivered a project delivered fast and on time: http://perl.dragonstaff.co.uk/app.zip 14 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 15. Summary Processes and decision making  requirements  business context  CBA decision basis  technical considerations, architecture, constraints and features  application components  Perl application frameworks 15 Desperately seeking... a lightweight Perl web framework 12/22/12
  • 16. Where to Get More Information CPAN http://search.cpan.org Books  Any Questions These slides are at http://perl.dragonstaff.co.uk/ 16 Desperately seeking... a lightweight Perl web framework 12/22/12