Building Better Controllers Symfony Live Berlin Benjamin Eberlei
|
|
|
- Milo Lawrence
- 10 years ago
- Views:
Transcription
1 Building Better Controllers Symfony Live Berlin 2014 Benjamin Eberlei
2 Me Working at Qafoo We promote high quality code with trainings and consulting Doctrine and Symfony
3 Outline Motivation
4 Motivation Application-Design A passion/obsession of mine. I occassionally blog about it. Mostly Symfony related
5 Motivation Give me a one-handed economist! All my economists say, On the one hand, on the other hand. (Harry S. Truman)
6 Motivation Design is about choices/trade-offs
7 Failure: Overengineering
8 Success: Simple design
9 Some (good!) Choices Buzzing in the Symfony Community (My blogging is partially to blame for this, sorry!) Domain-Driven-Design Command-Query-Responsibility-Seperation Event-Sourcing Hexagonal Architectures Microservices Symfony without Symfony Not even close to 100% of all the choices you can consider.
10 Consider A good architecture allows you to defer critical decisions, it doesn t force you to defer them. However, if you can defer them, it means you have lots of flexibility. (Uncle Bob)
11 Consider And since your controllers should be thin and contain nothing more than a few lines of glue-code, spending hours trying to decouple them from your framework doesn t benefit you in the long run. The amount of time wasted isn t worth the benefit. (Symfony Best Practices Book)
12 I don t agree 100% But there is a lot of truth in it! Standard Symfony Controllers usually end up fat! Leads us to think we need abstraction from Symfony Improving Symfony is easier, requires less time Goal: Defer complex abstractions
13 Requirements for Incremental Design Testability Refactorabillity Loose coupling Small number of dependencies
14 Quintessential Symfony Controller Example 1 p u b l i c f u n c t i o n e d i t A c t i o n ( $id, Request $ r e q u e s t ) 2 { 3 $entitymanager = $this >get ( doctrine. orm. default entity manager ) ; 4 $ r e p o s i t o r y = $entitymanager >g e t R e p o s i t o r y ( AcmeHelloBundle : A r t i c l e ) ; 5 6 t r y { 7 $ a r t i c l e = $ r e p o s i t o r y >f i n d Q u e r y ( $ i d ) ; 8 } c a t c h ( N o R e s u l t E x c e p t i o n $e ) { 9 throw new NotFoundHttpException ( ) ; 10 } i f (! $ t h i s >g e t ( s e c u r i t y. c o n t e x t ) >i s G r a n t e d ( EDIT, $ a r t i c l e ) ) { 13 throw new AccessDeniedHttpException ( ) ; 14 } $form = $this >createform ( new E d i t A r t i c l e T y p e ( ), $ a r t i c l e ) ; 17 $form >h a n d l e R e q u e s t ( $ r e q u e s t ) ; i f ( $form >isbound ( ) && $form >i s V a l i d ( ) ) { 20 $ e n t i t y M a n ager >f l u s h ( ) ; $ t h i s >get ( s e s s i o n ) >getflashbag ( ) >add ( 23 n o t i c e, 24 Your changes were saved! 25 ) ; r e t u r n $ t h i s >r e d i r e c t ( $ t h i s >g e n e r a t e U r l ( A r t i c l e. show, $ i d ) ) ; 28 } r e t u r n $ t h i s >r e n d e r ( 31 AcmeHelloBundle : A r t i c l e : e d i t. html. t w i g, 32 a r r a y ( 33 form => $form >createview ( ), 34 article => $article, 35 ) 36 ) ; 37 }
15 Quintessential Symfony Controller Example 1 p u b l i c f u n c t i o n e d i t A c t i o n ( $id, Request $ r e q u e s t ) 2 { 3 $ e n t i t y M a n a g e r = $ t h i s 4 >g e t ( d o c t r i n e. orm. d e f a u l t e n t i t y m a n a g e r ) ; 5 $ r e p o s i t o r y = $ e n t i t y M a n a g e r 6 >g e t R e p o s i t o r y ( AcmeHelloBundle : A r t i c l e ) ; 7 8 t r y { 9 $ a r t i c l e = $ r e p o s i t o r y >f i n d Q u e r y ( $ i d ) ; 10 } c a t c h ( N o R e s u l t E x c e p t i o n $e ) { 11 throw new NotFo undh ttpex cepti on ( ) ; 12 } 13 //.. 14 }
16 Quintessential Symfony Controller Example 1 p u b l i c f u n c t i o n e d i t A c t i o n ( $id, Request $ r e q u e s t ) 2 { 3 // $ s e c u r i t y = $ t h i s >g e t ( s e c u r i t y. c o n t e x t ) ; 6 i f (! $ s e c u r i t y >i s G r a n t e d ( EDIT, $ a r t i c l e ) ) { 7 throw new A c c e s s D e n i e d H t t p E x c e p t i o n ( ) ; 8 } 9 10 //.. 11 }
17 Quintessential Symfony Controller Example 1 p u b l i c f u n c t i o n e d i t A c t i o n ( $id, Request $ r e q u e s t ) 2 { 3 //... 4 $form = $ t h i s >createform ( 5 new E d i t A r t i c l e T y p e ( ), $ a r t i c l e 6 ) ; 7 $form >h a n d l e R e q u e s t ( $ r e q u e s t ) ; 8 9 i f ( $form >isbound ( ) && $form > i s V a l i d ( ) ) { 10 // } // }
18 Quintessential Symfony Controller Example 1 $entitymanager >f l u s h ( ) ; 2 3 $ t h i s >g e t ( s e s s i o n ) >g etflashbag ( ) >add ( 4 n o t i c e, 5 Your changes were saved! 6 ) ; 7 8 r e t u r n $ t h i s > r e d i r e c t ( 9 $ t h i s >g e n e r a t e U r l ( A r t i c l e. show, $ i d ) 10 ) ;
19 Quintessential Symfony Controller Example 1 p u b l i c f u n c t i o n e d i t A c t i o n ( $id, Request $ r e q u e s t ) 2 { 3 //.. 4 r e t u r n $ t h i s >r e n d e r ( 5 AcmeHelloBundle : A r t i c l e : e d i t. html. t w i g, 6 a r r a y ( 7 form => $form >c r e a t e V i e w ( ), 8 a r t i c l e => $ a r t i c l e, 9 ) 10 ) ; 11 }
20 Painful! Unfortunately the document is made in this style
21 Problems Coupling: 7 services, 3 exceptions and 1 entity class Even with impressive typing skills the time lost typing matters. Abstracting Forms, Security, Doctrine is alot of work Number of bugs are correlated to lines of code And this is just a CRUD example (no real behavior involved!)
22 Solution? Best Practices suggest Annotations But this just moves the lines/problem elsewere I don t trust them, especially not with security.
23 Solution? With some simple improvements on top of Symfony we can: cut down the number of services to one remove all exception code cut number of lines by half still keep the Symfony style
24 Two Approaches Move code related to response generation into listeners. Move code related to request/state into param converters. Contrary to Best Practices claim, the overhead is neglectible
25 Template EventListener Goal: Getting rid of the "templating" service dependency: Return array from controller Automatically convert to rendering a template Use naming convention to find the template Return new TemplateView() to pick a different template. Avoids having to use annotations.
26 Template EventListener 1 p u b l i c f u n c t i o n e d i t A c t i o n ( $ i d /,... / ) 2 { 3 r e t u r n a r r a y ( 4 a r t i c l e => $ a r t i c l e, 5 form => $form >c r e a t e V i e w ( ) 6 ) ; 7 }
27 Template EventListener 1 u s e QafooLabs \MVC\ TemplateView ; 2 3 p u b l i c f u n c t i o n e d i t A c t i o n ( $ i d /,... / ) 4 { 5 r e t u r n new TemplateView ( 6 AcmeHelloBundle : A r t i c l e : form. html. t w i g, 7 a r r a y ( 8 a r t i c l e => $ a r t i c l e, 9 form => $form >c r e a t e V i e w ( ) 10 ) 11 ) ; 12 }
28 Redirect Listener Goal: Getting rid of the "router" service dependency: The router is needed in controllers for redirecting Introduce new RedirectRouteResponse()
29 Redirect Listener 1 use QafooLabs \MVC\ R e d i r e c t R o u t e R e s p o n s e ; 2 3 p u b l i c f u n c t i o n e d i t A c t i o n ( $ i d /,... / ) 4 { 5 // r e t u r n new R e d i r e c t R o u t e R e s p o n s e ( 8 A r t i c l e. show, 9 a r r a y ( i d => $ i d ) 10 ) ; 11 }
30 Convert Exceptions Goal: Getting rid of Exception casting and handling in controller. Introduce configuration to map exceptions to status codes. Example: Doctrine NoResultException is always a 404 This reuses functionality that was only available for REST APIs before
31 Convert Exceptions 1 q a f o o l a b s n o f r a m e w o r k : 2 c o n v e r t e x c e p t i o n s : 3 D o c t r i n e \\ORM\\ N o R e s u l t E x c e p t i o n : 404
32 Handling Flash-Messages Goal: Get rid of the "session" service dependency. Introduce ParamConverter that passes the flash state into controller. Typehint for Flashes Suddenly turns into data object, not a service anymore. Applies learning from Request as a service failure
33 Handling Flash-Messages 1 p u b l i c f u n c t i o n e d i t A c t i o n ( /... /, F l a s h e s $ f l a s h e s ) 2 { 3 //.. 4 $ f l a s h e s >add ( n o t i c e, Your changes were saved ) ; 5 //... 6 }
34 Handling Forms Goal: Get rid of the "form.factory" service dependency. Introduce ParamConverter that passes new FormRequest FormRequest wraps both Request and FormFactory Typehint for FormRequest Forms turns into data object, not a service anymore.
35 Handling Forms 1 p u b l i c f u n c t i o n e d i t A c t i o n ( /. /, FormRequest $ r e q u e s t ) 2 { 3 $type = new E d i t A r t i c l e T y p e ( ) ; 4 i f ( $formrequest >h a n d l e ( $type, $ a r t i c l e ) ) { 5 //... 6 } 7 8 r e t u r n a r r a y ( 9 // form => $formrequest >c r e a t e V i e w ( ) 11 ) ; 12 }
36 Handling Security Goal: Get rid of the "security.context" service dependency. Security Token is a data object Data should be passed into functions as argument. Typehint for FrameworkContext Does someone have a better name? Applies learning from Request as a service failure
37 Handling Security 1 p u b l i c f u n c t i o n e d i t A c t i o n ( FrameworkContext $ c o n t e x t ) 2 { 3 //... 4 $context >a s s e r t I s G r a n t e d ( EDIT, $ a r t i c l e ) ; 5 //... 6 }
38 Controller as a Service Goal: Get rid of the "container" dependency Inject only the services that you need Controversial: Fabien does not approve controller/service.html
39 Controller as a Service 1 <?php 2 3 c l a s s A r t i c l e C o n t r o l l e r 4 { 5 / A r t i c l e R e p o s i t o r y 7 / 8 p r i v a t e $ r e p o s i t o r y ; 9 10 p u b l i c f u n c t i o n e d i t A c t i o n ( $id, /. / ) 11 { 12 $ a r t i c l e = $ t h i s >r e p o s i t o r y >f i n d Q u e r y ( $ i d ) ; //.. 15 } 16 }
40 Result 1 p u b l i c function editaction ( $id, FormRequest $request, FrameworkContext $context, F l a s h e s $ f l a s h e s ) 2 { 3 $ a r t i c l e = $ t h i s >r e p o s i t o r y >f i n d Q u e r y ( $ i d ) ; 4 $ c o n t e x t >a s s e r t I s G r a n t e d ( EDIT, $ a r t i c l e ) ; 5 6 $type = new E d i t A r t i c l e T y p e ( ) ; 7 i f ( $formrequest >h a n d l e ( $type, $ a r t i c l e ) ) { 8 $ t h i s >r e p o s i t o r y >s a v e ( $ a r t i c l e ) ; 9 10 $ f l a s h e s >add ( n o t i c e,... ) ; return new RedirectRouteResponse ( /.. / ) ; 13 } r e t u r n a r r a y ( a r t i c l e => $ a r t i c l e, 16 form => $formrequest >createview ( ) ) ; 17 }
41 Why? No service-layer needed in the beginning Treat contoller as service layer Refactoring towards services is simple Extract code into services Very small number of service dependencies Testable controllers
42 Testing? 1 p u b l i c f u n c t i o n t e s t E d i t ( ) 2 { 3 $repo = $ t h i s >getmock ( A r t i c l e R e p o s i t o r y : : c l a s s ) ; 4 $repo >e x p e c t s ( $ t h i s >once ( ) ) >method ( f i n d ) 5 > w i l l ( $ t h i s >r e t u r n V a l u e ( new A r t i c l e ) ) ; 6 $repo >expects ( $this >once ( ) ) >method ( save ) ; 7 8 $ c o n t r o l l e r = new A r t i c l e C o n t r o l l e r ( $repo ) ; 9 10 $ r e s p o n s e = $ c o n t r o l l e r >e d i t A c t i o n ( 11 $ a r t i c l e I d = 10, 12 new ValidFormRequest ( ), 13 new GrantAllContext ( ), 14 new FlashMock ( ) 15 ) ; $ t h i s >a s s e r t I n s t a n c e O f ( R e d i r e c t R o u t e R e s p o n s e : : c l a s s, $ r e s p o n s e ) ; 18 }
43
Symfony2 and Drupal. Why to talk about Symfony2 framework?
Symfony2 and Drupal Why to talk about Symfony2 framework? Me and why Symfony2? Timo-Tuomas Tipi / TipiT Koivisto, M.Sc. Drupal experience ~6 months Symfony2 ~40h Coming from the (framework) Java world
A Tour of Silex and Symfony Components. Robert Parker @yamiko_ninja
A Tour of Silex and Symfony Components Robert Parker @yamiko_ninja Wait Not Drupal? Self Introduction PHP Developer since 2012 HTML and JavaScript Since 2010 Full Stack Developer at Dorey Design Group
CERN Summer Student Program 2013 Report
CERN Summer Student Program 2013 Report Stanislav Pelák E-mail: [email protected] / [email protected] Abstract. This report describes the work and achievements of Stanislav Pelák, during his stay
Drupal CMS for marketing sites
Drupal CMS for marketing sites Intro Sample sites: End to End flow Folder Structure Project setup Content Folder Data Store (Drupal CMS) Importing/Exporting Content Database Migrations Backend Config Unit
Symfony2: estudo de caso IngressoPrático
Symfony2: estudo de caso IngressoPrático Symfony2 is a reusable set of standalone, decoupled and cohesive PHP components that solve common web development problems Fabien Potencier, What is Symfony2? 2/73
Web Development Frameworks
COMS E6125 Web-enHanced Information Management (WHIM) Web Development Frameworks Swapneel Sheth [email protected] @swapneel Spring 2012 1 Topic 1 History and Background of Web Application Development
This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications.
20486B: Developing ASP.NET MVC 4 Web Applications Course Overview This course provides students with the knowledge and skills to develop ASP.NET MVC 4 web applications. Course Introduction Course Introduction
What s really under the hood? How I learned to stop worrying and love Magento
What s really under the hood? How I learned to stop worrying and love Magento Who am I? Alan Storm http://alanstorm.com Got involved in The Internet/Web 1995 Work in the Agency/Startup Space 10 years php
Testing Rails. by Josh Steiner. thoughtbot
Testing Rails by Josh Steiner thoughtbot Testing Rails Josh Steiner April 10, 2015 Contents thoughtbot Books iii Contact us................................ iii Introduction 1 Why test?.................................
Migration Eclipse 3 to Eclipse 4
Migration Eclipse 3 to Eclipse 4 June 6th 2013 EclipseCon France 2013 OPCoach 2013 Table des matières I - Presentation 5 II - E3 to E4 migration. 7 A. Partial migration to Eclipse 4... 13 B. Full Migration...
Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA
Automating Rich Internet Application Development for Enterprise Web 2.0 and SOA Enterprise Web 2.0 >>> FAST White Paper November 2006 Abstract Modern Rich Internet Applications for SOA have to cope with
Designing framework for web development
Designing framework for web development Mohammad Hafijur Rahman Department of Informatics and Media Degree project 30 credits. Autumn term 2011 Supervisor: Dr. Jonas Sjöström Abstract In this software
Paul Boisvert. Director Product Management, Magento
Magento 2 Overview Paul Boisvert Director Product Management, Magento Platform Goals Release Approach 2014 2015 2016 2017 2.0 Dev Beta 2.0 Merchant Beta 2.x Ongoing Releases 2.0 Dev RC 2.0 Merchant GA
THE ROAD TO CODE. ANDROID DEVELOPMENT IMMERSIVE May 31. WEB DEVELOPMENT IMMERSIVE May 31 GENERAL ASSEMBLY
THE ROAD TO CODE WEB DEVELOPMENT IMMERSIVE May 31 ANDROID DEVELOPMENT IMMERSIVE May 31 GENERAL ASSEMBLY GENERAL ASSEMBLY @GA_CHICAGO WWW.FACEBOOK.COM/GENERALASSEMBLYCHI @GA_CHICAGO GENERAL ASSEMBLY GENERAL
Case Studies of Running the Platform. NetBeans UML Servlet JSP GlassFish EJB
September Case Studies of Running the Platform NetBeans UML Servlet JSP GlassFish EJB In this project we display in the browser the Hello World, Everyone! message created in the session bean with servlets
Developing ASP.NET MVC 4 Web Applications MOC 20486
Developing ASP.NET MVC 4 Web Applications MOC 20486 Course Outline Module 1: Exploring ASP.NET MVC 4 The goal of this module is to outline to the students the components of the Microsoft Web Technologies
Advanced Web Development SCOPE OF WEB DEVELOPMENT INDUSTRY
Advanced Web Development Duration: 6 Months SCOPE OF WEB DEVELOPMENT INDUSTRY Web development jobs have taken thе hot seat when it comes to career opportunities and positions as a Web developer, as every
Ruby on Rails. Object Oriented Analysis & Design CSCI-5448 University of Colorado, Boulder. -Dheeraj Potlapally
Ruby on Rails Object Oriented Analysis & Design CSCI-5448 University of Colorado, Boulder -Dheeraj Potlapally INTRODUCTION Page 1 What is Ruby on Rails Ruby on Rails is a web application framework written
Developer Tutorial Version 1. 0 February 2015
Developer Tutorial Version 1. 0 Contents Introduction... 3 What is the Mapzania SDK?... 3 Features of Mapzania SDK... 4 Mapzania Applications... 5 Architecture... 6 Front-end application components...
Ruby On Rails. CSCI 5449 Submitted by: Bhaskar Vaish
Ruby On Rails CSCI 5449 Submitted by: Bhaskar Vaish What is Ruby on Rails? Ruby on Rails is a web application framework written in Ruby, a dynamic programming language. Ruby on Rails uses the Model-View-Controller
Drupal 8 Development Retrospective. A timeline and retrospective from a core contributor
Drupal 8 Development Retrospective A timeline and retrospective from a core contributor 2011 2016 Drupal 7, Gates & Initiatives DrupalCon Chicago 2011, Drupal 8 development starts immediately. Dries discusses
Facebook - Twitter - Google +1 all in one plugin for Joomla enable "Twitter button", "Google +1
Facebook - Twitter - Google +1 all in one plugin for Joomla enable "Twitter button", "Google +1 button ", Facebook " Like button ", the Facebook " Share This button ", the Facebook " Comment Box ", the
HOW TO CREATE THEME IN MAGENTO 2
The Essential Tutorial: HOW TO CREATE THEME IN MAGENTO 2 A publication of Part 1 Whoever you are an extension or theme developer, you should spend time reading this blog post because you ll understand
alchemy webapp framework Introduction What is alchemy?
Cut to the Chase Series More Walk Less Talk alchemy webapp framework Introduction What is alchemy? Copyright 2010 by Eric Matthews. This document is licensed under Creative Commons 3.0 alchemy webapp framework
Easy configuration of NETCONF devices
Easy configuration of NETCONF devices David Alexa 1 Tomas Cejka 2 FIT, CTU in Prague CESNET, a.l.e. Czech Republic Czech Republic [email protected] [email protected] Abstract. It is necessary for developers
Pentesting Web Frameworks (preview of next year's SEC642 update)
Pentesting Web Frameworks (preview of next year's SEC642 update) Justin Searle Managing Partner UtiliSec Certified Instructor SANS Institute [email protected] // @meeas What Are Web Frameworks Frameworks
Safewhere*Identify 3.4. Release Notes
Safewhere*Identify 3.4 Release Notes Safewhere*identify is a new kind of user identification and administration service providing for externalized and seamless authentication and authorization across organizations.
Developing ASP.NET MVC 4 Web Applications
Course M20486 5 Day(s) 30:00 Hours Developing ASP.NET MVC 4 Web Applications Introduction In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5 tools
Web Frameworks. web development done right. Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof.
Web Frameworks web development done right Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof.ssa Anna Corazza Outline 2 Web technologies evolution Web frameworks Design Principles
Model-View-Controller. and. Struts 2
Model-View-Controller and Struts 2 Problem area Mixing application logic and markup is bad practise Harder to change and maintain Error prone Harder to re-use public void doget( HttpServletRequest request,
Aspect Oriented Programming. with. Spring
Aspect Oriented Programming with Spring Problem area How to modularize concerns that span multiple classes and layers? Examples of cross-cutting concerns: Transaction management Logging Profiling Security
Test-Drive ASP.NET MVC
Extracted from: Test-Drive ASP.NET MVC This PDF file contains pages extracted from Test-Drive ASP.NET MVC, published by the Pragmatic Bookshelf. For more information or to purchase a paperback or PDF copy,
IT Insights. Using Microsoft SharePoint 2013 to build a robust support and training portal. A service of Microsoft IT Showcase
IT Insights A service of Microsoft IT Showcase Using Microsoft SharePoint 2013 to build a robust support and training portal June 2015 The Microsoft IT team that is responsible for hosting customer and
Add a new payment method plugin
WebsiteBaker Shop-Module Bakery Add a new payment method plugin This brief tutorial refers to Bakery v1.7.6 or later. Tutorial v0.7 Files used in the plugin A Bakery payment method plugin consists of at
Design and Functional Specification
2010 Design and Functional Specification Corpus eready Solutions pvt. Ltd. 3/17/2010 1. Introduction 1.1 Purpose This document records functional specifications for Science Technology English Math (STEM)
Web Cloud Architecture
Web Cloud Architecture Introduction to Software Architecture Jay Urbain, Ph.D. [email protected] Credits: Ganesh Prasad, Rajat Taneja, Vikrant Todankar, How to Build Application Front-ends in a Service-Oriented
EZcast technical documentation
EZcast technical documentation Document written by > Michel JANSENS > Arnaud WIJNS from ULB PODCAST team http://podcast.ulb.ac.be http://ezcast.ulb.ac.be [email protected] SOMMAIRE SOMMAIRE 2 1. INTRODUCTION
Getting Started with Kanban Paul Klipp
Getting Started with Kanban Paul Klipp kanbanery 2 Contents 3/ Getting Started with Kanban 4/ What is Kanban? 7/ Using Kanban Does kanban apply to me? How can it help me? What will I have to change? 10/
RepoGuard Validation Framework for Version Control Systems
RepoGuard Validation Framework for Version Control Systems Remidi09 (2009-07-13, Limerick) Malte Legenhausen, Stefan Pielicke German Aerospace Center (DLR), Cologne http://www.dlr.de/sc Slide 1 Remidi09
Developing ASP.NET MVC 4 Web Applications Course 20486A; 5 Days, Instructor-led
Developing ASP.NET MVC 4 Web Applications Course 20486A; 5 Days, Instructor-led Course Description In this course, students will learn to develop advanced ASP.NET MVC applications using.net Framework 4.5
Certified PHP/MySQL Web Developer Course
Course Duration : 3 Months (120 Hours) Day 1 Introduction to PHP 1.PHP web architecture 2.PHP wamp server installation 3.First PHP program 4.HTML with php 5.Comments and PHP manual usage Day 2 Variables,
JUG Münster. Modern Java web development. Thomas Kruse
JUG Münster Modern Java web development Thomas Kruse INTRODUCTION Thomas Kruse Consultant Leader JUG Münster @everflux on twitter 2 SHOW CASE Social App (not only) for JUGs Twitter Facebook Keeping credentials
Pattern Insight Clone Detection
Pattern Insight Clone Detection TM The fastest, most effective way to discover all similar code segments What is Clone Detection? Pattern Insight Clone Detection is a powerful pattern discovery technology
Customer Bank Account Management System Technical Specification Document
Customer Bank Account Management System Technical Specification Document Technical Specification Document Page 1 of 15 Table of Contents Contents 1 Introduction 3 2 Design Overview 4 3 Topology Diagram.6
Ektron to EPiServer Digital Experience Cloud: Information Architecture
Ektron to EPiServer Digital Experience Cloud: Information Architecture This document is intended for review and use by Sr. Developers, CMS Architects, and other senior development staff to aide in the
After many years we are happy to create a new social plugin with a great potential.
After many years we are happy to create a new social plugin with a great potential. The Compago Social Share is created for Joomla 3.1 and it will let you share your contents on the most used social network:
Stock Trader System. Architecture Description
Stock Trader System Architecture Description Michael Stevens [email protected] http://www.mestevens.com Table of Contents 1. Purpose of Document 2 2. System Synopsis 2 3. Current Situation and Environment
A MORE FLEXIBLE MULTI-TENANT SOA FOR SAAS
A MORE FLEXIBLE MULTI-TENANT SOA FOR SAAS Eric H. Nielsen, Ph.D. VP Platform Architecture CA Technologies [email protected] For IEEE Software Technology Conference STC 2014 April 3, 2014 Long Beach,
Symfony vs. Integrating products when to use a framework
Symfony vs. Integrating products when to use a framework Xavier Lacot Clever Age Who I am Symfony developer since end 2005 Several contributions (plugins, docs, patches, etc.) Manager of the PHP Business
Oracle Application Development Framework Overview
An Oracle White Paper June 2011 Oracle Application Development Framework Overview Introduction... 1 Oracle ADF Making Java EE Development Simpler... 2 THE ORACLE ADF ARCHITECTURE... 3 The Business Services
White Paper On. Single Page Application. Presented by: Yatin Patel
White Paper On Single Page Application Presented by: Yatin Patel Table of Contents Executive Summary... 3 Web Application Architecture Patterns... 4 Common Aspects... 4 Model... 4 View... 4 Architecture
Overview. How It Works
Overview Email is a great way to communicate with your alumni and donors. It s agile, it can be interactive, and it has lower overhead than print mail. Our constituents are also becoming more and more
Java and RDBMS. Married with issues. Database constraints
Java and RDBMS Married with issues Database constraints Speaker Jeroen van Schagen Situation Java Application store retrieve JDBC Relational Database JDBC Java Database Connectivity Data Access API ( java.sql,
Website Promotion for Voice Actors: How to get the Search Engines to give you Top Billing! By Jodi Krangle http://www.voiceoversandvocals.
Website Promotion for Voice Actors: How to get the Search Engines to give you Top Billing! By Jodi Krangle http://www.voiceoversandvocals.com Why have a website? If you re busier than you d like to be
An introduction to creating JSF applications in Rational Application Developer Version 8.0
An introduction to creating JSF applications in Rational Application Developer Version 8.0 September 2010 Copyright IBM Corporation 2010. 1 Overview Although you can use several Web technologies to create
How To Understand The Benefits Of Cloud Computing
Issue in Focus: Assessing the Cloud PLM Opportunity Evaluating Benefits, Requirements, and Considerations Tech-Clarity, Inc. 2012 Table of Contents Introducing the Issue... 3 The Cloud Meets PLM... 3 Evaluating
Framework as a master tool in modern web development
Framework as a master tool in modern web development PETR DO, VOJTECH ONDRYHAL Communication and Information Systems Department University of Defence Kounicova 65, Brno, 662 10 CZECH REPUBLIC [email protected],
How To Build A Web App
UNCLASSIFIED Next Gen Web Architecture for the Cloud Era Chief Scientist, Raytheon Saturn 2013 28 Apr - 3 May Copyright (2013) Raytheon Agenda Existing Web Application Architecture SOFEA Lessons learned
Shipbeat Magento Module. Installation and user guide
Shipbeat Magento Module Installation and user guide This guide explains how the Shipbeat Magento Module is installed, used and uninstalled from your Magento Community Store. If you have questions or need
WEB AND APPLICATION DEVELOPMENT ENGINEER
WEB AND APPLICATION DEVELOPMENT ENGINEER Program Objective/Description: As a Web Development Engineer, you will gain a wide array of fundamental and in-depth training on front end web development, as well
Official Amazon Checkout Extension for Magento Commerce. Documentation
Official Amazon Checkout Extension for Magento Commerce Documentation 1. Introduction This extension provides official integration of your Magento store with Inline Checkout by Amazon service. Checkout
Sponsored by: Speaker: Brian Madden, Independent Industry Analyst and Blogger
THIN CLIENT OPTIONS Sponsored by: Speaker: Brian Madden, Independent Industry Analyst and Blogger Brian Madden: Hello. My name is Brian Madden, and welcome to Part 2 of our threepart video series about
BUILDING MULTILINGUAL WEBSITES WITH DRUPAL 7
BUILDING MULTILINGUAL WEBSITES WITH DRUPAL 7 About us! Getting to know you... What are your multilingual needs? What you need Check A fresh Drupal 7 instance installed locally Download of module files
Designing RESTful Web Applications
Ben Ramsey php works About Me: Ben Ramsey Proud father of 7-month-old Sean Organizer of Atlanta PHP user group Founder of PHP Groups Founding principal of PHP Security Consortium Original member of PHPCommunity.org
Power Tools for Pivotal Tracker
Power Tools for Pivotal Tracker Pivotal Labs Dezmon Fernandez Victoria Kay Eric Dattore June 16th, 2015 Power Tools for Pivotal Tracker 1 Client Description Pivotal Labs is an agile software development
A How-to Guide By: Riaan Van Der Merwe, General Manager, Dynamics, Neudesic
Managing Dynamics CRM 2013 Applications from Cradle to Grave A How-to Guide By: Riaan Van Der Merwe, General Manager, Dynamics, Neudesic Table of Contents Introduction...3 Creating the Right Fit...3 Solutions
The Rules 1. One level of indentation per method 2. Don t use the ELSE keyword 3. Wrap all primitives and Strings
Object Calisthenics 9 steps to better software design today, by Jeff Bay http://www.xpteam.com/jeff/writings/objectcalisthenics.rtf http://www.pragprog.com/titles/twa/thoughtworks-anthology We ve all seen
Volkov Vyacheslav. Summary. Saransk, 430005, Mordovia, Russian Federation Moscow, Russian Federation +7(925) 022-57- 82, +7(917) 692-56- 72
Volkov Vyacheslav Birthday: Birthplace: Location: E- mail: Skype: Phone: Homepage: CV profiles 10 April 1988 Saransk, 430005, Mordovia, Russian Federation Moscow, Russian Federation [email protected] vexellz
Multi Factor Authentication API
GEORGIA INSTITUTE OF TECHNOLOGY Multi Factor Authentication API Yusuf Nadir Saghar Amay Singhal CONTENTS Abstract... 3 Motivation... 3 Overall Design:... 4 MFA Architecture... 5 Authentication Workflow...
User Stories Applied
User Stories Applied for Agile Software Development Mike Cohn Boston San Francisco New York Toronto Montreal London Munich Paris Madrid Capetown Sydney Tokyo Singapore Mexico City Chapter 2 Writing Stories
Code Qualities and Coding Practices
Code Qualities and Coding Practices Practices to Achieve Quality Scott L. Bain and the Net Objectives Agile Practice 13 December 2007 Contents Overview... 3 The Code Quality Practices... 5 Write Tests
Specialized Programme on Web Application Development using Open Source Tools
Specialized Programme on Web Application Development using Open Source Tools Objective: At the end of the course, Students will be able to: Understand various open source tools(programming tools and databases)
A This panel lists all the IVR queues you have built so far. This is where you start the creation of a IVR
IVR The IVR (Interactive Voice Response) feature allows you to automate some or all of your inbound call handling. At its simplest, you can implement an IVR that routes calls to a specific department selected
Email Marketing Tips. From M R K Development
Email Marketing Tips From M R K Development Free downloads and templates for BC Free downloads and templates for BC Stats - Average 3.5 percent click through is average across al industries Open rates
Choosing a Content Management System (CMS)
Choosing a Content Management System (CMS) Document Version Revision History Date Document Version Description Created By: 10/Oct/2013 First draft Laraib Saad Table of Contents 1. Introduction
Real World SOA. Sean A Corfield CTO, Scazu Inc.
Real World SOA Sean A Corfield CTO, Scazu Inc. What is this about? SOA = Service-Oriented Architecture Expose common business entities and operations to multiple clients across the enterprise Adobe Hosted
symfony symfony as a platform Fabien Potencier http://www.symfony-project.com/ http://www.sensiolabs.com/
symfony symfony as a platform Fabien Potencier http://www.symfony-project.com/ http://www.sensiolabs.com/ symfony 1.1 A lot of internal refactoring really a lot Some new features but not a lot Tasks are
Structured Content: the Key to Agile. Web Experience Management. Introduction
Structured Content: the Key to Agile CONTENTS Introduction....................... 1 Structured Content Defined...2 Structured Content is Intelligent...2 Structured Content and Customer Experience...3 Structured
Filter NEW IN FIRSTCLASS CLIENT WHAT S NEW IN FIRSTCLASS 9.0. New Look. Login screen. List View Sort Order. Filtering Containers.
NEW IN FIRSTCLASS CLIENT New Look Login screen The login screen has a new look that flows with our current interface. List View Sort Order The sort order you choose in list view will be used in other views
From the Monolith to Microservices: Evolving Your Architecture to Scale. Randy Shoup @randyshoup linkedin.com/in/randyshoup
From the Monolith to Microservices: Evolving Your Architecture to Scale Randy Shoup @randyshoup linkedin.com/in/randyshoup Background Consulting CTO at Randy Shoup Consulting o o Helping companies from
Best Practices for Programming Eclipse and OSGi
Best Practices for Programming Eclipse and OSGi BJ Hargrave Jeff McAffer IBM Lotus IBM Rational Software 2006 by IBM; made available under the EPL v1.0 March 24, 2006 Introduction During the Eclipse 3.0
