James Cowie Software Engineer Session

Size: px
Start display at page:

Download "James Cowie Software Engineer Session"

Transcription

1

2 James Cowie Software Engineer Session

3 Getting ready for Magento 2 How to prepare for a new e- commerce system

4 Whats changed since Magento 1?

5 PHP has changed

6 PHP since Magento 1 Composer Namespaces - PHP Traits - PHP Generators - PHP Better Interface support PHP Type Hinting - PHP

7 The world of engineering has changed

8 Software Engineering Server Architecture Cloud Docker VPS Software Architecture within PHP TDD PHPSpec BDD Behat DDD

9 Installing Magento

10 How did we install Magento 1 Large scale bundled installations per versions.

11 Along came composer

12 Installing Magento 2 with composer composer create-project --stability=beta --no-install magento/project-community-edition M2Test

13 { } Whats this created "name": "magento/project-community-edition", "type": "project", "require": { "magento/product-community-edition": " beta12" }, "require-dev": { }

14 But wait there is more composer offers

15 More Composer Packagist + packages.magento.com Package versioning Dependency Management

16 Show me the use case! composer require "league/period"

17 1 /** 2 League\Period\Period; 3 */ 4 protected $_dateperiod; 5 6 /** 7 \League\Period\Period; $dateperiod 8 */ 9 public function construct(\league\period\period $dateperiod) 10 { 11 $this->_dateperiod = $dateperiod; 12 }

18 Composer 101 Versioning In Composer

19 Composer 101 Exact version: 1.4.2, v "magento/product-community-edition": 1.0.1

20 Composer 101 Ranges: >=1.0, <2.0, "magento/product-community-edition": >=1.0, <2

21 Composer 101 Wildcard: 1.0.*, 1.* "magento/product-community-edition": 1.* "magento/product-community-edition": 1.0.*

22 Composer 101 Next Significant Release: ~1.2 is equivalent to >=1.2,<2.0. "magento/product-community-edition": ~1.2

23 A note on semver

24 Decoupling modules

25 Better Module Architecture

26 We can and should apply best software practice to Magento

27 Benefits of decoupling modules? Clean Code Reusable packages Testable Easier to read Easier to maintain

28 Yea but in Magento 1 we could not fully do this..

29 Decoupling in Magento 1 No Dependency Injection container. Mage god class Hard to test Hard to decouple logic

30 Dependency Injection in Magento 2

31

32 public function construct( \Magento\Framework\App\Action\Context $context, \Magento\Catalog\Model\Design $catalogdesign, \Magento\Catalog\Model\Session $catalogsession, \Magento\Framework\Registry $coreregistry, \Magento\Store\Model\StoreManagerInterface $storemanager, \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryurlpathgenerator PageFactory $resultpagefactory, \Magento\Framework\Controller\Result\ForwardFactory $resultforwardfactory, Resolver $layerresolver, CategoryRepositoryInterface $categoryrepository \Magento\Framework\App\Action\Context $context, \Magento\Catalog\Model\Design $catalogdesign, \Magento\Catalog\Model\Session $catalogsession, \Magento\Framework\Registry $coreregistry, \Magento\Store\Model\StoreManagerInterface $storemanager, \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator

33 public function construct( \Magento\Framework\App\Action\Context $context, \Magento\Catalog\Model\Design $catalogdesign, \Magento\Catalog\Model\Session $catalogsession, \Magento\Framework\Registry $coreregistry, \Magento\Store\Model\StoreManagerInterface $storemanager, \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator $categoryurlpathgenerator, PageFactory Code $resultpagefactory, Smell \Magento\Framework\Controller\Result\ForwardFactory $resultforwardfactory, Resolver $layerresolver, CategoryRepositoryInterface $categoryrepository \Magento\Framework\App\Action\Context $context, \Magento\Catalog\Model\Design $catalogdesign, \Magento\Catalog\Model\Session $catalogsession, \Magento\Framework\Registry $coreregistry, \Magento\Store\Model\StoreManagerInterface $storemanager, \Magento\CatalogUrlRewrite\Model\CategoryUrlPathGenerator

34 Information on DI Dependency Injection replaces Mage:: god class Dependency Injection can be overused. Dependency Injection enables composition.

35 How we manage dependencies without Injection 1 <?php 2 class Sample 3 { 4 protected $logger; 5 6 public function dosomething() 7 { 8 $this->logger = new \Logger(); 9 $logger->dosomething(); 10 } 11 }

36 How we manage dependencies without Injection 1 <?php 2 class Sample 3 { 4 protected $logger; 5 6 public function dosomething() 7 { 8 $this->logger = new \Logger(); 9 $logger->dosomething(); 10 } 11 }

37 Basic Dependency Injection 1 <?php 2 class SampleDi { 3 protected $logger; 4 public function construct(\logger $logger) { 5 $this->logger = $logger; 6 } 7 8 public function dosomething() { 9 $this->logger->dosomething(); 10 } 11 }

38 Basic Dependency Injection 1 <?php 2 class SampleDi { 3 protected $logger; 4 public function construct(\logger $logger) { 5 $this->logger = $logger; 6 } 7 8 public function dosomething() { 9 $this->logger->dosomething(); 10 } 11 }

39 Basic Dependency Injection 1 <?php 2 class SampleDi { 3 protected $logger; 4 public function construct(\logger $logger) { 5 $this->logger = $logger; 6 } 7 8 public function dosomething() { 9 $this->logger->dosomething(); 10 } 11 }

40 What are the benefits of DI? Creating a new instance of logger is removed from the class. Concrete implementation of Logger can be swapped out via container configuration When running tests we can Mock the dependency

41 How does this look within Magento 2

42 /** \Magento\Framework\View\Element\Context $context */ public function construct( \Magento\Framework\View\Element\Context $context ) { parent:: construct($context, $data); }

43 DI Continued Its not only Objects that can be injected.

44 <type name="magento\cms\model\wysiwyg\images\storage"> <arguments> <argument name="extensions" xsi:type="array"> <item name="allowed" xsi:type="array"> <item name="jpg" xsi:type="number">1</item> <item name="jpeg" xsi:type="number">1</item> <item name="png" xsi:type="number">1</item> <item name="gif" xsi:type="number">1</item> </item> </argument> </arguments>

45 <type name="magento\cms\model\wysiwyg\images\storage"> <arguments> <argument name="extensions" xsi:type="array"> <item name="allowed" xsi:type="array"> <item name="jpg" xsi:type="number">1</item> <item name="jpeg" xsi:type="number">1</item> <item name="png" xsi:type="number">1</item> <item name="gif" xsi:type="number">1</item> </item> </argument> </arguments>

46 <type name="magento\cms\model\wysiwyg\images\storage"> <arguments> <argument name="extensions" xsi:type="array"> <item name="allowed" xsi:type="array"> <item name="jpg" xsi:type="number">1</item> <item name="jpeg" xsi:type="number">1</item> <item name="png" xsi:type="number">1</item> <item name="gif" xsi:type="number">1</item> </item> </argument> </arguments>

47 <type name="magento\cms\model\wysiwyg\images\storage"> <arguments> <argument name="extensions" xsi:type="array"> <item name="allowed" xsi:type="array"> <item name="jpg" xsi:type="number">1</item> <item name="jpeg" xsi:type="number">1</item> <item name="png" xsi:type="number">1</item> <item name="gif" xsi:type="number">1</item> </item> </argument> </arguments>

48 protected $_extensions; public function construct( array $extensions = [] ) { $this->_extensions = $extensions; }

49 $allowed = $this->_extensions["{$type}_allowed"];

50 Inversion of Control Separating instantiation of objects from the object Easier to test Aids with Separation of concerns

51 How can we test this?

52

53

54 function it_should_create_a_new_cached_image($filesystem) { $filesystem->beadoubleof( \Magento\Framework\Filesystem $filesystem); } $this->createcachedfile($filesystem) ->shouldreturntrue();

55 Closing thoughts

56 Composer can help create reusable packages Dependency Injection is a must, Yet be careful on how many dependencies are injected Testing has become easier Decoupling of modules is now easier Magento 2 service contracts / Design by contract ( Interfaces )

57 Thank-you and any questions?

The de constructed. Magento module

The de constructed. Magento module The de constructed Magento module James Cowie Technical Team Lead Inviqa t/@jcowie gh/jamescowie 2016 Magento Master mover deconstruct... verb de con struct \ˌdē-kən-ˈstrəkt\ To take apart or examine in

More information

Paul Boisvert. Director Product Management, Magento

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

More information

Dependency Injection Container Documentation

Dependency Injection Container Documentation Dependency Injection Container Documentation Release v1.0.0 Filipe Silva Dec 08, 2017 Contents 1 Getting started 3 1.1 Introduction...............................................

More information

Expert Guidance on Migrating from Magento 1 to Magento 2

Expert Guidance on Migrating from Magento 1 to Magento 2 Expert Guidance on Migrating from Magento 1 to Magento 2 Gordon Knoppe Business Solutions Architect, ECG James Cowie Technical Architect, ECG Expert Consulting Group ECG Charter: To provide expert insight,

More information

Magento 2 Certified Professional Developer. Exam Study Guide

Magento 2 Certified Professional Developer. Exam Study Guide Magento 2 Certified Professional Developer Exam Study Guide U Contents Contents Introduction... 1 Topics and Objectives... 3 1 Magento Architecture and Customization Techniques... 3 1.1 Describe Magento

More information

Magento Technical Guidelines

Magento Technical Guidelines Magento Technical Guidelines Eugene Shakhsuvarov, Software Engineer @ Magento 2018 Magento, Inc. Page 1 Magento 2 Technical Guidelines Document which describes the desired technical state of Magento 2

More information

OUT OF STOCK NOTIFICATION FOR MAGENTO 2

OUT OF STOCK NOTIFICATION FOR MAGENTO 2 1 User Guide Out of Stock Notification for Magento 2 OUT OF STOCK NOTIFICATION FOR MAGENTO 2 USER GUIDE BSS COMMERCE 1 2 User Guide Out of Stock Notification for Magento 2 Contents 1. Out of Stock Notification

More information

Porting A Complex Extension To Magento 2

Porting A Complex Extension To Magento 2 Porting A Complex Extension To Magento 2 Fabian Schmengler Magento Developer at integer_net The Extension IntegerNet_Solr Improved Search And Layered Navigation More relevant search results Fuzzy search

More information

Advanced Object Oriented PHP

Advanced Object Oriented PHP CNM STEMulus Center Web Development with PHP November 11, 2015 1/17 Outline 1 2 Diamond Problem Composing vs Inheriting Case Study: Strategy Design Pattern 2/17 Definition is when a class is based on another

More information

Magento 2 Code Customizations

Magento 2 Code Customizations Magento 2 Code Customizations Anton Kril Architect, Magento 2 Agenda Service Contracts Presentation Layer Extension Points Service Contracts Extensions Compatibility Challenges How to make sure that two

More information

Introducing Dependency Injection. Rob Allen November 2013

Introducing Dependency Injection. Rob Allen November 2013 Introducing Dependency Injection Rob Allen November 2013 I make websites 19ft.com Dependency Injection enables loose coupling and loose coupling makes code more maintainable Mark Seemann We re actually

More information

Getting started with Dependency Injection. Rob Allen May 2015

Getting started with Dependency Injection. Rob Allen May 2015 Getting started with Dependency Injection Rob Allen May 2015 Dependency Injection enables loose coupling and loose coupling makes code more maintainable Mark Seemann We're actually talking about loose

More information

GearmanBundle. Release

GearmanBundle. Release GearmanBundle Release Nov 28, 2017 Contents 1 User Documentation 3 1.1 Installing/Configuring.......................................... 3 1.2 Configuration...............................................

More information

Zend Framework 2 Patterns

Zend Framework 2 Patterns Zend Framework 2 Patterns Matthew Weier O'Phinney Project Lead, Zend Framework Roadmap for today Namespaces and Autoloading Exceptions Configuration Plugin systems Dispatching Inversion of Control Format

More information

Unit 1 3 Dependency Injection & Inversion of Control

Unit 1 3 Dependency Injection & Inversion of Control Unit 1 3 Dependency Injection & Inversion of Control This is a free chapter from our CBOX202: WireBox Dependency Injection course (www.coldbox.org/courses/cbox202) and is freely donated to the ColdFusion

More information

Five Tips To Make Good Object- Oriented Code Better By Brandon Savage

Five Tips To Make Good Object- Oriented Code Better By Brandon Savage Five Tips To Make Good Object- Oriented Code Better By Brandon Savage Getting Started Welcome To The World Premiere! Who Am I? Who Am I? Resident of Washington, DC Freelancer and jobhunting PHP developer

More information

phpspec Documentation

phpspec Documentation phpspec Documentation Release 3.x Konstantin Kudryashov (everzet), Marcello Duarte (_md) Nov 17, 2017 Contents 1 Introduction 3 2 Installation 5 3 Getting Started 7 4 Prophet Objects 11 5 Let and Let

More information

Introduction to Testing and Maintainable code

Introduction to Testing and Maintainable code Introduction to Testing and Maintainable code Reasons not to write unit tests 1. I don't know how to write tests. 2. Writing tests is too hard. 3. I don't have enough time to write tests. 4. Testing is

More information

SOLID Principles. Equuleus Technologies. Optional Subheading October 19, 2016

SOLID Principles. Equuleus Technologies. Optional Subheading October 19, 2016 SOLID Principles Optional Subheading October 19, 2016 Why SOLID Principles? The traits of well designed software are as follows Maintainability - The ease with which a software system or component can

More information

Ingegneria del Software Corso di Laurea in Informatica per il Management. Design Patterns part 1

Ingegneria del Software Corso di Laurea in Informatica per il Management. Design Patterns part 1 Ingegneria del Software Corso di Laurea in Informatica per il Management Design Patterns part 1 Davide Rossi Dipartimento di Informatica Università di Bologna Pattern Each pattern describes a problem which

More information

Build Testable Client and Service Applications

Build Testable Client and Service Applications Build Testable Client and Service Applications Brian Noyes IDesign Inc (www.idesign.net) brian.noyes@idesign.net About Brian Chief Architect IDesign Inc. (www.idesign.net) Microsoft Regional Director MVP

More information

ReferralSystemDemoBundle Documentation

ReferralSystemDemoBundle Documentation ReferralSystemDemoBundle Documentation Release 0.1 Vyacheslav Enis June 14, 2014 Contents 1 Installation 3 1.1 Prerequisites............................................... 3 1.2 Installation................................................

More information

Laravel: From Apprentice To Artisan

Laravel: From Apprentice To Artisan Laravel: From Apprentice To Artisan Advanced Architecture With Laravel 4 Taylor Otwell This book is for sale at http://leanpub.com/laravel This version was published on 2013-09-04 This is a Leanpub book.

More information

Introducing Dependency Injection. Rob Allen September 2013

Introducing Dependency Injection. Rob Allen September 2013 Introducing Dependency Injection Rob Allen September 2013 Dependency Injection enables loose coupling and loose coupling makes code more maintainable Mark Seemann We re actually talking about loose coupling

More information

Developer Experience

Developer Experience Developer Experience Max Yekaterynenko Director of Community Engineering @maksek_ua Discover Install Design Develop Integrate Deploy Engage Maintain Monetize Discover Install Design Develop Integrate Deploy

More information

A Sweet Test Suite. DrupalCon NA A Sweet Test Suite

A Sweet Test Suite. DrupalCon NA A Sweet Test Suite A Sweet Test Suite A Sweet Test Suite Dan Gurin Twitter @dgurin dangur @ D.O, GitHub, LinkedIn... Organizer @ Drupal Camp Asheville Engineer @CivicActions Test Driven Development Test Driven Development

More information

Agile Architecture. The Why, the What and the How

Agile Architecture. The Why, the What and the How Agile Architecture The Why, the What and the How Copyright Net Objectives, Inc. All Rights Reserved 2 Product Portfolio Management Product Management Lean for Executives SAFe for Executives Scaled Agile

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecture 14: Design Workflow Department of Computer Engineering Sharif University of Technology 1 UP iterations and workflow Workflows Requirements Analysis Phases Inception Elaboration

More information

Dealing with Legacy Code. Sebastian Bergmann October 28 th 2014

Dealing with Legacy Code. Sebastian Bergmann October 28 th 2014 Dealing with Legacy Code Sebastian Bergmann October 28 th 2014 Sebastian Bergmann Driven by his passion to help developers build better software. sharing experience Legacy Code "Legacy code is code that

More information

Magento Marketplace's New Extension Quality Program

Magento Marketplace's New Extension Quality Program Magento Marketplace's New Extension Quality Program Erika Talbott Product Manager - Marketplace J Ravi Menon Architect - Marketplace Tom Erskine Lead Engineer - MFTF Overview Erika Talbott Marketplace

More information

Implementing MVVM in Real World ArcGIS Server Silverlight Applications. Brandon Copeland LJA Engineering, Inc.

Implementing MVVM in Real World ArcGIS Server Silverlight Applications. Brandon Copeland LJA Engineering, Inc. Implementing MVVM in Real World ArcGIS Server Silverlight Applications Brandon Copeland LJA Engineering, Inc. 1 Agenda / Focused Topics Application Demo Model-View-ViewModel (MVVM) What is MVVM? Why is

More information

Magento Commerce Cloud. Implementing a Project Effectively

Magento Commerce Cloud. Implementing a Project Effectively Magento Commerce Cloud Implementing a Project Effectively Nadiia Syvokonenko Software Engineer Magento Commerce Billy Gilbert Software Engineer Magento Commerce Magento Commerce Cloud Magento Commerce

More information

Design Patterns #3. Reid Holmes. Material and some slide content from: - GoF Design Patterns Book - Head First Design Patterns

Design Patterns #3. Reid Holmes. Material and some slide content from: - GoF Design Patterns Book - Head First Design Patterns Material and some slide content from: - GoF Design Patterns Book - Head First Design Patterns Design Patterns #3 Reid Holmes Lecture 16 - Thursday November 15 2011. GoF design patterns $ %!!!! $ "! # &

More information

Dependency Injection with ObjectPoolManager

Dependency Injection with ObjectPoolManager Dependency Injection with ObjectPoolManager Recently I got my hands over some of the IOC tools available for.net and really liked the concept of dependency injection from starting stage of application

More information

Unit Testing In Python

Unit Testing In Python Lab 13 Unit Testing In Python Lab Objective: One of the hardest parts of computer programming is ensuring that a program does what you expect it to do. For instance, a program may fail to meet specifications,

More information

Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall

Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall Want Better Software? TEST it! (and thenwrite it) Tame defects before they appear You Rise/Bugs Fall Introduction TDD had its origins as an integral part of Extreme Programming TDD, BDD, DDD and the coming

More information

Working with the Seagull Framework. By Demian Turner, Seagull Systems

Working with the Seagull Framework. By Demian Turner, Seagull Systems Working with the Seagull Framework By Demian Turner, Seagull Systems seagullproject.org Who is Demian Turner? Developing websites since 1996, using PHP since 1999 Committer on several open source projects:

More information

The UIComponent Ally or Enemy?

The UIComponent Ally or Enemy? The UIComponent Ally or Enemy? Joaquín Ruiz @jokiruizlite - Disclaimer This presentation contains my own views and thoughts of Magento 2 UI Components. Index Index 1. Introduction and the controversy 2.

More information

Single Responsibility Principle

Single Responsibility Principle Single Responsibility Principle Class should have only one responsibility which means class should be highly cohesive and implement strongly related logic. Class implementing feature 1 AND feature 2 AND

More information

Lessons Learned. Johnny Bigert, Ph.D., Skype/Microsoft October 26, 2011

Lessons Learned. Johnny Bigert, Ph.D., Skype/Microsoft October 26, 2011 Lessons Learned Johnny Bigert, Ph.D., Skype/Microsoft johnny.bigert@skype.net October 26, 2011 Why do we do the things we do? Software Development Object-orientation, design principles, timeboxing, teams,

More information

Chris Donnan & Solomon Duskis

Chris Donnan & Solomon Duskis The Peer Frameworks Series -.Net and Java Spring Framework Developer Session Chris Donnan & Solomon Duskis All Rights Reserved 0 Overview 600-630 Light Snack 630 700 Introduction to Inversion of Control,

More information

Blast Project. Release

Blast Project. Release Blast Project Release Nov 03, 2017 Reference Guide 1 Installation 1 2 Getting started with Blast CoreBundle 3 3 Configuration 5 4 Architecture 7 5 The Contribution Guide 9 6 Other Bundles 11 i ii CHAPTER

More information

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich

CSCD01 Engineering Large Software Systems. Design Patterns. Joe Bettridge. Winter With thanks to Anya Tafliovich CSCD01 Engineering Large Software Systems Design Patterns Joe Bettridge Winter 2018 With thanks to Anya Tafliovich Design Patterns Design patterns take the problems consistently found in software, and

More information

Easy Conversion Tracking with Magento Commerce

Easy Conversion Tracking with Magento Commerce Easy Conversion Tracking with Magento Commerce Page 2 David Deppner President, Psyberware Page 3 Agenda A Practical "How To" Guide Better Reporting with Magento 2's Google Tag Manager Implementation Google

More information

CUSTOM OPTION TEMPLATE FOR MAGENTO 2

CUSTOM OPTION TEMPLATE FOR MAGENTO 2 1 User Guide Custom Option Template for Magento 2 CUSTOM OPTION TEMPLATE FOR MAGENTO 2 USER GUIDE BSS COMMERCE 1 2 User Guide Custom Option Template for Magento 2 1. Custom Option Template for Magento

More information

Dependency Injection and Spring. INF5750/ Lecture 2 (Part II)

Dependency Injection and Spring. INF5750/ Lecture 2 (Part II) Dependency Injection and Spring INF5750/9750 - Lecture 2 (Part II) Problem area Large software contains huge number of classes that work together How to wire classes together? With a kind of loose coupling,

More information

magento_1:product-parts-finder

magento_1:product-parts-finder magento_1:product-parts-finder https://amasty.com/docs/doku.php?id=magento_1:product-parts-finder For more details see the Product Parts Finder extension page. Product Parts Finder Setting up Finder step

More information

Object-Oriented Design

Object-Oriented Design Object-Oriented Design Lecturer: Raman Ramsin Lecture 20: GoF Design Patterns Creational 1 Software Patterns Software Patterns support reuse of software architecture and design. Patterns capture the static

More information

Index. Note: Boldface numbers indicate code and illustrations; an italic t indicates a table.

Index. Note: Boldface numbers indicate code and illustrations; an italic t indicates a table. Index Note: Boldface numbers indicate code and illustrations; an italic t indicates a table. A absolute positioning, in HTML, 184 187, 184 187 abstract classes, 6, 6 Accept header, 260 265, 261 265 access

More information

Improving the Magento 2 Developer Experience

Improving the Magento 2 Developer Experience Improving the Magento 2 Developer Experience Alan Kent Magento Chief Architect Consistent Magento 2 Feedback I have been working on some larger Magento 2.1 EE solutions for a few months now and I really

More information

ORDER DETAILS ON SUCCESS PAGE FOR MAGENTO 2 USER GUIDE

ORDER DETAILS ON SUCCESS PAGE FOR MAGENTO 2 USER GUIDE 1 User Guide Order Details on Success Page for Magento 2 ORDER DETAILS ON SUCCESS PAGE FOR MAGENTO 2 USER GUIDE BSS COMMERCE 1 2 User Guide Order Details on Success Page for Magento 2 1. Order Details

More information

Dependency Inversion, Dependency Injection and Inversion of Control. Dependency Inversion Principle by Robert Martin of Agile Fame

Dependency Inversion, Dependency Injection and Inversion of Control. Dependency Inversion Principle by Robert Martin of Agile Fame Dependency Inversion, Dependency Injection and Inversion of Control Dependency Inversion Principle by Robert Martin of Agile Fame Dependency Inversion Principle History Postulated by Robert C. Martin Described

More information

McCa!"s Triangle of Quality

McCa!s Triangle of Quality McCa!"s Triangle of Quality Maintainability Portability Flexibility Reusability Testability Interoperability PRODUCT REVISION PRODUCT TRANSITION PRODUCT OPERATION Correctness Usability Reliability Efficiency

More information

Just Mock It! Leveraging Mock Objects

Just Mock It! Leveraging Mock Objects Just Mock It! Leveraging Mock Objects 1 Who am I? Luis Majano - Computer Engineer Born in San Salvador, El Salvador --> President of Ortus Solutions Manager of the IECFUG (www.iecfug.com) Creator of ColdBox,

More information

PRE-CON WORKSHOP 5. Add intelligence to your solutions with AI, bots, and more. Brian Randell FROBISHER 5

PRE-CON WORKSHOP 5. Add intelligence to your solutions with AI, bots, and more. Brian Randell FROBISHER 5 MONDAY 14 th MAY WORKSHOP 1 WORKSHOP 2 WORKSHOP 3 WORKSHOP 4 WORKSHOP 5 WORKSHOP 6 WORKSHOP 7 WORKSHOP 8 WORKSHOP 9 Accelerated C# fundamentals Cloudbased with Microsoft Azure best practices Microservices

More information

Creational. Structural

Creational. Structural Fitness for Future of Design Patterns & Architectural Styles Design patterns are difficult to teach, so we conducted a class collaboration where we all researched and reported on a variety of design patterns

More information

Understand and improve your Magento 2 store caching and performance

Understand and improve your Magento 2 store caching and performance Understand and improve your Magento 2 store caching and performance Renato Cason Head of Development END. Overview Introduction Application Cache Block caching Cache clean by tag Custom cache types Profiling

More information

Bldr.io Documentation

Bldr.io Documentation Bldr.io Documentation Release 0.0.2 Aaron Scherer February 10, 2017 Contents 1 Content 5 1.1 Installation................................................ 5 1.2 Usage...................................................

More information

Advanced React JS + Redux Development

Advanced React JS + Redux Development Advanced React JS + Redux Development Course code: IJ - 27 Course domain: Software Engineering Number of modules: 1 Duration of the course: 40 astr. hours / 54 study 1 hours Sofia, 2016 Copyright 2003-2016

More information

Riccardo Tempesta. MageSpecialist

Riccardo Tempesta. MageSpecialist Riccardo Tempesta CTO @ MageSpecialist Magento Community Maintainer Magento Community Contributor Magento 1 Certified Developer Magento 2 Professional Developer Beyond Software Development: Challenges

More information

Design for Testability. Dave Liddament (Director and developer at Lamp Bristol Limited)

Design for Testability. Dave Liddament (Director and developer at Lamp Bristol Limited) Design for Testability Dave Liddament (Director and developer at Lamp Bristol Limited) Why Test? - Know our code works - Prevent against regression when developing new code - Stable platform for refactoring

More information

Berkeley Scheme s OOP

Berkeley Scheme s OOP Page < 1 > Berkeley Scheme s OOP Introduction to Mutation If we want to directly change the value of a variable, we need a new special form, set! (pronounced set BANG! ). (set! )

More information

Behat BDD, FUNCTIONAL TESTS & SELENIUM (IN DRUPAL!)

Behat BDD, FUNCTIONAL TESTS & SELENIUM (IN DRUPAL!) Behat BDD, FUNCTIONAL TESTS & SELENIUM (IN DRUPAL!) s Hallo! > Lead of the Symfony documentation team > KnpLabs US - Symfony consulting, training & kumbaya > Writer for KnpUniversity.com: PHP & Symfony

More information

Phake - PHP Mocking Framework Documentation

Phake - PHP Mocking Framework Documentation Phake - PHP Mocking Framework Documentation Release 1.0.3 Mike Lively Sep 06, 2017 Contents 1 Introduction to Phake 1 2 Getting Started 5 2.1 Composer Install.............................................

More information

FLOW3 Robert Lemke Karsten Dambekalns

FLOW3 Robert Lemke Karsten Dambekalns FLOW3 Robert Lemke Karsten Dambekalns FLOW3 Robert Lemke Karsten Dambekalns Copyright 2007, 2008, 2009 Robert Lemke, Karsten Dambekalns Abstract FLOW3 is a modern application framework for enterprise-grade

More information

By Philip Japikse MVP, MCSD.Net, MCDBA, CSM Principal Consultant Pinnacle Solutions Group

By Philip Japikse MVP, MCSD.Net, MCDBA, CSM Principal Consultant Pinnacle Solutions Group By Philip Japikse Phil.Japikse@pinnsg.com MVP, MCSD.Net, MCDBA, CSM Principal Consultant Pinnacle Solutions Group Phone:513-619-6323 Fax:513-791-5202 1 Principal Consultant, Pinnacle Solutions Group, Inc.

More information

11/12/12. Objectives DESIGN PATTERNS. Design Pattern. Defined Design Patterns. Applying Design Patterns. Motivating Example

11/12/12. Objectives DESIGN PATTERNS. Design Pattern. Defined Design Patterns. Applying Design Patterns. Motivating Example Objectives Design Patterns Open up Eclipse DESIGN PATTERNS Nov 12, 2012 Sprenkle - CSCI209 1 Nov 12, 2012 Sprenkle - CSCI209 2 Design Pattern General reusable solution to a commonly occurring problem in

More information

Tecniche di Progettazione: Design Patterns

Tecniche di Progettazione: Design Patterns Tecniche di Progettazione: Design Patterns GoF: Builder, Chain Of Responsibility, Flyweight 1 Design patterns, Laura Semini, Università di Pisa, Dipartimento di Informatica. Builder 2 Design patterns,

More information

DI Why? Getting a Grip on Dependency Injection. Jeremy Clark

DI Why? Getting a Grip on Dependency Injection. Jeremy Clark DI Why? Getting a Grip on Dependency Injection Jeremy Clark www.jeremybytes.com @jeremybytes What Is Dependency Injection? Dependency Injection is a software design pattern that allows a choice of component

More information

DEPLOYMENT MADE EASY!

DEPLOYMENT MADE EASY! DEPLOYMENT MADE EASY! Presented by Hunde Keba & Ashish Pagar 1 DSFederal Inc. We provide solutions to Federal Agencies Our technology solutions connect customers to the people they serve 2 Necessity is

More information

MIGRATING FROM MAGENTO 1 TO MAGENTO 2

MIGRATING FROM MAGENTO 1 TO MAGENTO 2 MIGRATING FROM MAGENTO 1 TO MAGENTO 2 FULL SERVICE ECOMMERCE AGENCY Best practice ecommerce websites since 1997. We design, build, host, support & update websites. Background Magento advised in late 2015

More information

Sitecore E-Commerce Developer's Cookbook

Sitecore E-Commerce Developer's Cookbook Sitecore E-Commerce Fundamental Edition 1.1 Sitecore E-Commerce Developer's Cookbook Rev: 2011-05-13 Sitecore E-Commerce Fundamental Edition 1.1 Sitecore E-Commerce Developer's Cookbook Configuration and

More information

JAVA GUI PROGRAMMING REVISION TOUR III

JAVA GUI PROGRAMMING REVISION TOUR III 1. In java, methods reside in. (a) Function (b) Library (c) Classes (d) Object JAVA GUI PROGRAMMING REVISION TOUR III 2. The number and type of arguments of a method are known as. (a) Parameter list (b)

More information

Programming II (CS300)

Programming II (CS300) 1 Programming II (CS300) Chapter 01: Procedural Programming MOUNA KACEM mouna@cs.wisc.edu Fall 2018 Procedural Programming 2 Introduction Procedural Programming: General Overview Procedural Programming:

More information

The Quick Tour Version: master

The Quick Tour Version: master The Quick Tour Version: master What could be better to make up your own mind than to try out Symfony yourself? Aside from a little time, it will cost you nothing. Step by step you will explore the Symfony

More information

Refactoring Legacy Code

Refactoring Legacy Code By: Adam Culp Twitter: @adamculp https://joind.in/11658 1 2 About me PHP 5.3 Certified Consultant at Zend Technologies Zend Certification Advisory Board Organizer SoFloPHP (South Florida) Organized SunshinePHP

More information

CUSTOMER APPROVAL FOR MAGENTO 2

CUSTOMER APPROVAL FOR MAGENTO 2 1 User Guide Customer Approval for Magento 2 CUSTOMER APPROVAL FOR MAGENTO 2 USER GUIDE BSS COMMERCE 1 2 User Guide Customer Approval for Magento 2 Contents 1. Customer Approval for Magento 2 Overview...

More information

MAGENTO ADD MULTIPLE PRODUCTS TO CART

MAGENTO ADD MULTIPLE PRODUCTS TO CART 1 User Guide Add Multiple Products to Cart MAGENTO ADD MULTIPLE PRODUCTS TO CART USER GUIDE 1 2 User Guide Add Multiple Products to Cart Table of Contents I. Magento Add Multiple Products to Cart Extension

More information

Refactoring Tested Code: Has Mocking. RefTest. Managing Refactoring in a Test. Driven World. Gone Wrong? Ben Stopford Royal Bank of Scotland

Refactoring Tested Code: Has Mocking. RefTest. Managing Refactoring in a Test. Driven World. Gone Wrong? Ben Stopford Royal Bank of Scotland RefTest Refactoring Tested Code: Has Mocking Driven World Gone Wrong? Managing Refactoring in a Test Ben Stopford Royal Bank of Scotland I've always been a old fashioned classic TDDer and thus far I don't

More information

Tecniche di Progettazione: Design Patterns

Tecniche di Progettazione: Design Patterns Tecniche di Progettazione: Design Patterns GoF: Chain Of Responsibility 1 Chain Of Responsibility Intent Avoid coupling the sender of a request to its receiver by giving more than one object a chance to

More information

Apache Storm: Hands-on Session A.A. 2016/17

Apache Storm: Hands-on Session A.A. 2016/17 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Apache Storm: Hands-on Session A.A. 2016/17 Matteo Nardelli Laurea Magistrale in Ingegneria Informatica

More information

Does Your Code Measure Up?

Does Your Code Measure Up? Does Your Code Measure Up? By: Adam Culp Twitter: @adamculp https://joind.in/13300 2 About me PHP 5.3 Certified Consultant at Zend Technologies Organizer SoFloPHP (South Florida) Organized SunshinePHP

More information

JUNIT 5 EXTENSIONS 1. 1

JUNIT 5 EXTENSIONS 1. 1 JUNIT EXTENSIONS 1. 1 MARC PHILIPP Software Engineer @ LogMeIn in Karlsruhe, Germany JUnit Maintainer since 2012 Twitter: @marcphilipp Web: marcphilipp.de 1. 2 JUNIT IS RELEASED! Release date: September

More information

Seven Deadly Sins of Agile Testing

Seven Deadly Sins of Agile Testing Seven Deadly Sins of Agile Testing 2 About me Brad Swanson Time to market Traditional Development Analyze Implement Test Agile Development Deliverable Deliverable 3 Risk Risk traditional agile Time 4 Schedule

More information

Running Splunk Enterprise within Docker

Running Splunk Enterprise within Docker Running Splunk Enterprise within Docker Michael Clayfield Partner Consultant 03/09/2017 1.1 Forward-Looking Statements During the course of this presentation, we may make forward-looking statements regarding

More information

Alternatively, use : after else and use a final endif. Blocks of statements are grouped by { } Sys.Prog & Scripting - HW Univ 2

Alternatively, use : after else and use a final endif. Blocks of statements are grouped by { } Sys.Prog & Scripting - HW Univ 2 Systems Programming & Scripting Lecture 18: Control Structures Sys.Prog & Scripting - HW Univ 1 Example: If

More information

Introduction INF 5750

Introduction INF 5750 Introduction - INF 5750 INF 5750 Technical basis Interfaces Three-layer architecture Framework and tool overview Interfaces What is it? Defines a contract with implementing classes Defines which methods

More information

Cloud providers, tools and best practices in running Magento on Kubernetes. Adrian Balcan MindMagnet Software

Cloud providers, tools and best practices in running Magento on Kubernetes. Adrian Balcan MindMagnet Software Cloud providers, tools and best practices in running Magento on Kubernetes Adrian Balcan DevOps @ MindMagnet Software About Me Companies Projects Adrian Balcan contact@adrianbalcan.com Agenda Magento on

More information

Payment Suite. Release

Payment Suite. Release Payment Suite Release Apr 25, 2017 Contents 1 User Documentation 3 1.1 Installation................................................ 3 1.2 Configuration............................................... 4

More information

1 Software Architecture

1 Software Architecture Some buzzwords and acronyms for today Software architecture Design pattern Separation of concerns Single responsibility principle Keep it simple, stupid (KISS) Don t repeat yourself (DRY) Don t talk to

More information

DDD and BDD. Dan North ThoughtWorks

DDD and BDD. Dan North ThoughtWorks DDD and BDD Dan North ThoughtWorks BDD and DDD Dan North ThoughtWorks What is Domain Driven Design? It s about focusing on the domain and letting it affect the software very much - Jimmy Nilsson (ADDDP)

More information

Architecture using Functional Programming concepts < + >

Architecture using Functional Programming concepts < + > Architecture using Functional Programming concepts < + > Jorge Castillo @JorgeCastilloPr 1 2 Kotlin and Functional Programming FP means concern separation (declarative computations vs runtime execution),

More information

HIDE PRICE CALL FOR PRICE FOR MAGENTO 2

HIDE PRICE CALL FOR PRICE FOR MAGENTO 2 1 User Guide Hide Price Call For Price for Magento 2 HIDE PRICE CALL FOR PRICE FOR MAGENTO 2 USER GUIDE BSS COMMERCE 1 2 User Guide Hide Price Call For Price for Magento 2 Contents 1. Hide Price Call For

More information

Programming, numerics and optimization

Programming, numerics and optimization Programming, numerics and optimization Lecture A-4: Object-oriented programming Łukasz Jankowski ljank@ippt.pan.pl Institute of Fundamental Technological Research Room 4.32, Phone +22.8261281 ext. 428

More information

SPRING MOCK TEST SPRING MOCK TEST I

SPRING MOCK TEST SPRING MOCK TEST I http://www.tutorialspoint.com SPRING MOCK TEST Copyright tutorialspoint.com This section presents you various set of Mock Tests related to Spring Framework. You can download these sample mock tests at

More information

https://tale.sh/mlin17

https://tale.sh/mlin17 First Steps to Building Secure Magento Extensions https://tale.sh/mlin17 Page 1 Talesh Seeparsan CTO Bit79 Page 2 There is no such thing as an unhackable site You just need to be able to run faster than

More information

P2: Collaborations. CSE 335, Spring 2009

P2: Collaborations. CSE 335, Spring 2009 P2: Collaborations CSE 335, Spring 2009 Milestone #1 due by Thursday, March 19 at 11:59 p.m. Completed project due by Thursday, April 2 at 11:59 p.m. Objectives Develop an application with a graphical

More information

BEHAVIOR DRIVEN DEVELOPMENT BDD GUIDE TO AGILE PRACTICES. Director, Strategic Solutions

BEHAVIOR DRIVEN DEVELOPMENT BDD GUIDE TO AGILE PRACTICES. Director, Strategic Solutions BEHAVIOR DRIVEN DEVELOPMENT BDD GUIDE TO AGILE PRACTICES Presenter: Joshua Eastman Director, Strategic Solutions ABOUT THE SPEAKER Josh has over seven years of experience as an accomplished software testing

More information

Demonstrations and examples are a key part in most introductory physics student s learning

Demonstrations and examples are a key part in most introductory physics student s learning 2 Demonstrations and examples are a key part in most introductory physics student s learning process. Students are well versed in how gravity functions because they have experienced its effects first hand,

More information