SlideShare a Scribd company logo
1 of 25
Download to read offline
Symfony3 w duecie z Vue.js
Maciej Harbuz
31/03/2017
GeekWeek
Co wiedzieliśmy
przed startem
projektu?
Kluczowy aspekt: user experience
(mnogość funkcjonalności
w głównym serwisie)
Ruch głównie mobilny
Wiele źródeł danych jednocześnie
(w tym pobieranie danych
live z zewnętznych usług)
Obciążenie witryny: 300
userów na raz w serwisie
(planowane 500 w bliskiej
perspektywie)
Co wiedzieliśmy przed startem projektu?
Technologia
Frontend: Backend:
Dlaczego Symfony 3 ?
Duże doświadczenie z Sf2
Sf3 nie stanowi dużej rewolucji
w stosunku do Sf2
Kluczowy support wersji (planowany
support dla przyszłej wersji 3.4 - 2021 rok)
Czego używamy podczas kododwania?
phploc - rozmiar projektu
lint - sprawdzanie składni
PHP_Depend - metryki kodu
PHP_MD - wykrywanie złych fragmentów kodu
PHP_CodeSniffer - trzymanie standardów kodowania
PHP_CPD - wykrywanie duplikatów w kodzie
PHP_Unit - odpalanie testów jednostkowych
Behat - odpalenie testów funkcjonalnych
PHPLOC
phploc 3.0.1 by Sebastian Bergmann.
Directories 16
Files 34
Size
Lines of Code (LOC) 1782
Comment Lines of Code (CLOC) 658 (36.92%)
Non-Comment Lines of Code (NCLOC) 1124 (63.08%)
Logical Lines of Code (LLOC) 349 (19.58%)
Classes 227 (65.04%)
Average Class Length 6
Minimum Class Length 0
Maximum Class Length 60
Average Method Length 1
Minimum Method Length 1
Maximum Method Length 6
Functions 0 (0.00%)
Average Function Length 0
Not in classes or functions 122 (34.96%)
Cyclomatic Complexity
Average Complexity per LLOC 0.04
Average Complexity per Class 1.44
Minimum Class Complexity 1.00
Maximum Class Complexity 3.00
Average Complexity per Method 1.16
Dependencies
Global Accesses 0
Global Constants 0 (0.00%)
Global Variables 0 (0.00%)
Super-Global Variables 0 (0.00%)
Attribute Accesses 98
Non-Static 93 (94.90%)
Static 5 (5.10%)
Method Calls 117
Non-Static 103 (88.03%)
Static 14 (11.97%)
Structure
Namespaces 17
Interfaces 4
Traits 0
Classes 30
Abstract Classes 1 (3.33%)
Concrete Classes 29 (96.67%)
Methods 98
Scope
Non-Static Methods 94 (95.92%)
Static Methods 4 (4.08%)
Visibility
Public Methods 82 (83.67%)
Non-Public Methods 16 (16.33%)
Functions 1
Named Functions 0 (0.00%)
Anonymous Functions 1 (100.00%)
Constants 6
Global Constants 0 (0.00%)
Class Constants 6 (100.00%)
PHPLOC
lint:
[apply] Errors parsing
/home/www/xcoding/stock/src/AppBundle/Command/PullPriceCommand.
php
[apply] PHP Parse error: syntax error, unexpected '$this'
(T_VARIABLE) in
/home/www/xcoding/stock/src/AppBundle/Command/PullPriceCommand.
php on line 14
BUILD FAILED
/home/www/xcoding/stock/build.xml:120: apply returned: 255
Total time: 0 seconds
PHP -l (LINT)
PHP_Depend
ANDC
AHH
NOP 22
38
139
1364 251
110187
NOC
NOM NOM
CALLS
FANOUT
LOC
CYCLO
0.109
0.621
1.727
1.806
0.438
3.658
9.813
0.137
Low Average High
1.0
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0.0
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0
Reader
ReportParser
Bankier
UseCase
Form
Entity
Downloader
Filter
Loader
Company
Entity
Translator
Report
Abstraction
PHP_Depend
src/AppBundle/Command/PullPriceCommand.php:14 Avoid unused local
variables such as '$t'.
src/AppBundle/Command/PullPriceCommand.php:14 Avoid variables
with short names like $t. Configured minimum length is 2.
PHP_Mess
Detector
FILE: src/Application/UseCase/GetReport.php
-------------------------------------------------------------------
---
FOUND 5 ERRORS AFFECTING 5 LINES
-------------------------------------------------------------------
---
33 | ERROR | [x] Opening parenthesis of a multi-line function call
| | must be the last content on the line
38 | ERROR | [x] Closing parenthesis of a multi-line function call
| | must be on a line by itself
41 | ERROR | [x] Inline control structures are not allowed
44 | ERROR | [x] Opening parenthesis of a multi-line function call
| | must be the last content on the line
49 | ERROR | [x] Closing parenthesis of a multi-line function call
| | must be on a line by itself
-------------------------------------------------------------------
---
PHPCBF CAN FIX THE 5 MARKED SNIFF VIOLATIONS AUTOMATICALLY
-------------------------------------------------------------------
---
FILE: src/Application/UseCase/PullPrice.php
-------------------------------------------------------------------
---
FOUND 1 ERROR AFFECTING 1 LINE
-------------------------------------------------------------------
---
56 | ERROR | Empty CATCH statement detected
-------------------------------------------------------------------
PHP_CodeSniffer
phpcpd 3.0.0 by Sebastian Bergmann.
0.00% duplicated lines out of 1784 total lines of code.
Time: 17 ms, Memory: 3.25MB
PHP CPD
(Copy/Paste
Detector)
PHPUnit 5.5.4 by Sebastian Bergmann and contributors.
..................................
34 / 34 (100%)
Time: 1.1 seconds, Memory: 9.00MB
OK (34 tests, 39 assertions)
PHP_Unit
Feature: User can check company details and price
Background: # features/company.feature:3
Given I am a User # FeatureContext::iAmAUser()
Scenario: I want to see all companies as a User #
features/company.feature:6
When I list companies #
CompanyContext::iListCompanies()
Then I see all companies in the system #
CompanyContext::iSeeAllCompaniesInTheSystem()
Scenario: I want to see company details as a User #
features/company.feature:10
When I enter "PKO" company site #
CompanyContext::iEnterCompanySite()
Then I get "PKO" company details #
CompanyContext::iGetCompanyDetails()
12 scenarios (12 passed)
46 steps (46 passed)
0m5.25s (25.79Mb)
Behat
Dlaczego Vue.js ?
Bliska konkurencja
Vue.js
Angular
Angular 2
React.js
Wdrażaliśmy już sf2 + angular 2-krotnie
Chcieliśmy nauczyć się czegoś nowego
Vue.js wygrywał w raportach wydajności
Lepsza składnia niż React.js
Angular2 jest czymś “zbyt nowym” (2016r.)
Przewagi Vue.js #1
- automatyczne odświeżanie
przeglądarki
body {
background:
#e0b13a;
}
Przewagi Vue.js #2
- kompilacja w locie
Przewagi Vue.js #3
- wykrywanie błędów
Architektura
środowiska
Transmisja danych - architektura
External APIs
for ecommerce
ESTIMOTE
Firebase
Beacony
API
API
SPA
ESTIMOTE
SDK
Pytania
Marek Kich
CEO
Maciej Harbuz
CTO
Kamil Mikołajczyk
Sales Manager
Renata Mączyńska
Sales Manager
Konrad Kryłowicz
Marketing Manager
Areyouready?
There are many ways you can contact us, but let’s try the good old ones.
x-coding.eu
/x-coding-it-studio
m.harbuz@x-coding.pl
ul. Czysta 4
50-013 Wrocław
Poland
X-Coding IT Studio

More Related Content

What's hot

REST APIs in Laravel 101
REST APIs in Laravel 101REST APIs in Laravel 101
REST APIs in Laravel 101Samantha Geitz
 
Web service with Laravel
Web service with LaravelWeb service with Laravel
Web service with LaravelAbuzer Firdousi
 
Laravel Restful API and AngularJS
Laravel Restful API and AngularJSLaravel Restful API and AngularJS
Laravel Restful API and AngularJSBlake Newman
 
Laravel 5 Annotations: RESTful API routing
Laravel 5 Annotations: RESTful API routingLaravel 5 Annotations: RESTful API routing
Laravel 5 Annotations: RESTful API routingChristopher Pecoraro
 
API Platform: Full Stack Framework Resurrection
API Platform: Full Stack Framework ResurrectionAPI Platform: Full Stack Framework Resurrection
API Platform: Full Stack Framework ResurrectionLes-Tilleuls.coop
 
RESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher PecoraroRESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher PecoraroChristopher Pecoraro
 
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - WisemblySymfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - WisemblyGuillaume POTIER
 
Bootstrat REST APIs with Laravel 5
Bootstrat REST APIs with Laravel 5Bootstrat REST APIs with Laravel 5
Bootstrat REST APIs with Laravel 5Elena Kolevska
 
Web services with laravel
Web services with laravelWeb services with laravel
Web services with laravelConfiz
 
Rest api titouan benoit
Rest api   titouan benoitRest api   titouan benoit
Rest api titouan benoitTitouan BENOIT
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel frameworkAhmad Fatoni
 
Creating a modern web application using Symfony API Platform Atlanta
Creating a modern web application using  Symfony API Platform AtlantaCreating a modern web application using  Symfony API Platform Atlanta
Creating a modern web application using Symfony API Platform AtlantaJesus Manuel Olivas
 
Creating your own framework on top of Symfony2 Components
Creating your own framework on top of Symfony2 ComponentsCreating your own framework on top of Symfony2 Components
Creating your own framework on top of Symfony2 ComponentsDeepak Chandani
 
Creating REST Applications with the Slim Micro-Framework by Vikram Vaswani
Creating REST Applications with the Slim Micro-Framework by Vikram VaswaniCreating REST Applications with the Slim Micro-Framework by Vikram Vaswani
Creating REST Applications with the Slim Micro-Framework by Vikram Vaswanivvaswani
 
ACL in CodeIgniter
ACL in CodeIgniterACL in CodeIgniter
ACL in CodeIgnitermirahman
 

What's hot (20)

REST APIs in Laravel 101
REST APIs in Laravel 101REST APIs in Laravel 101
REST APIs in Laravel 101
 
Web service with Laravel
Web service with LaravelWeb service with Laravel
Web service with Laravel
 
Laravel Restful API and AngularJS
Laravel Restful API and AngularJSLaravel Restful API and AngularJS
Laravel Restful API and AngularJS
 
Javascript laravel's friend
Javascript laravel's friendJavascript laravel's friend
Javascript laravel's friend
 
Laravel 5 Annotations: RESTful API routing
Laravel 5 Annotations: RESTful API routingLaravel 5 Annotations: RESTful API routing
Laravel 5 Annotations: RESTful API routing
 
API Platform: Full Stack Framework Resurrection
API Platform: Full Stack Framework ResurrectionAPI Platform: Full Stack Framework Resurrection
API Platform: Full Stack Framework Resurrection
 
RESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher PecoraroRESTful API development in Laravel 4 - Christopher Pecoraro
RESTful API development in Laravel 4 - Christopher Pecoraro
 
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - WisemblySymfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
Symfony2, Backbone.js & socket.io - SfLive Paris 2k13 - Wisembly
 
Bootstrat REST APIs with Laravel 5
Bootstrat REST APIs with Laravel 5Bootstrat REST APIs with Laravel 5
Bootstrat REST APIs with Laravel 5
 
Web services with laravel
Web services with laravelWeb services with laravel
Web services with laravel
 
Rest api titouan benoit
Rest api   titouan benoitRest api   titouan benoit
Rest api titouan benoit
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel framework
 
Creating a modern web application using Symfony API Platform Atlanta
Creating a modern web application using  Symfony API Platform AtlantaCreating a modern web application using  Symfony API Platform Atlanta
Creating a modern web application using Symfony API Platform Atlanta
 
REST API Laravel
REST API LaravelREST API Laravel
REST API Laravel
 
Creating your own framework on top of Symfony2 Components
Creating your own framework on top of Symfony2 ComponentsCreating your own framework on top of Symfony2 Components
Creating your own framework on top of Symfony2 Components
 
Laravel 5
Laravel 5Laravel 5
Laravel 5
 
Red5 - PHUG Workshops
Red5 - PHUG WorkshopsRed5 - PHUG Workshops
Red5 - PHUG Workshops
 
How to use soap component
How to use soap componentHow to use soap component
How to use soap component
 
Creating REST Applications with the Slim Micro-Framework by Vikram Vaswani
Creating REST Applications with the Slim Micro-Framework by Vikram VaswaniCreating REST Applications with the Slim Micro-Framework by Vikram Vaswani
Creating REST Applications with the Slim Micro-Framework by Vikram Vaswani
 
ACL in CodeIgniter
ACL in CodeIgniterACL in CodeIgniter
ACL in CodeIgniter
 

Similar to Symfony3 w duecie z Vue.js

Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?Wim Godden
 
20 PHP Static Analysis and Documentation Generators #burningkeyboards
20 PHP Static Analysis and Documentation Generators #burningkeyboards20 PHP Static Analysis and Documentation Generators #burningkeyboards
20 PHP Static Analysis and Documentation Generators #burningkeyboardsDenis Ristic
 
The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6Wim Godden
 
Joomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation TestingJoomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation TestingShyam Sunder Verma
 
Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016bugcrowd
 
The why and how of moving to php 8
The why and how of moving to php 8The why and how of moving to php 8
The why and how of moving to php 8Wim Godden
 
PHPcon Poland - Static Analysis of PHP Code – How the Heck did I write so man...
PHPcon Poland - Static Analysis of PHP Code – How the Heck did I write so man...PHPcon Poland - Static Analysis of PHP Code – How the Heck did I write so man...
PHPcon Poland - Static Analysis of PHP Code – How the Heck did I write so man...Rouven Weßling
 
2021.laravelconf.tw.slides2
2021.laravelconf.tw.slides22021.laravelconf.tw.slides2
2021.laravelconf.tw.slides2LiviaLiaoFontech
 
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)Alejandro Hernández
 
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblick
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im ÜberblickEin Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblick
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblickrenebruns
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance毅 吕
 
ENPM808 Independent Study Final Report - amaster 2019
ENPM808 Independent Study Final Report - amaster 2019ENPM808 Independent Study Final Report - amaster 2019
ENPM808 Independent Study Final Report - amaster 2019Alexander Master
 
BSides IR in Heterogeneous Environment
BSides IR in Heterogeneous EnvironmentBSides IR in Heterogeneous Environment
BSides IR in Heterogeneous EnvironmentStefano Maccaglia
 
Legacy Lowdown - Options When Migrating Solaris Applications
Legacy Lowdown - Options When Migrating Solaris ApplicationsLegacy Lowdown - Options When Migrating Solaris Applications
Legacy Lowdown - Options When Migrating Solaris ApplicationsAppZero
 
PHP QA Tools
PHP QA ToolsPHP QA Tools
PHP QA Toolsrjsmelo
 
Feldo: Function Event Listing and Dynamic Observing for Detecting and Prevent...
Feldo: Function Event Listing and Dynamic Observing for Detecting and Prevent...Feldo: Function Event Listing and Dynamic Observing for Detecting and Prevent...
Feldo: Function Event Listing and Dynamic Observing for Detecting and Prevent...Tzung-Bi Shih
 
Mazda siv - web services
Mazda   siv - web servicesMazda   siv - web services
Mazda siv - web servicesOlivier Lépine
 

Similar to Symfony3 w duecie z Vue.js (20)

Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?Is your code ready for PHP 7 ?
Is your code ready for PHP 7 ?
 
20 PHP Static Analysis and Documentation Generators #burningkeyboards
20 PHP Static Analysis and Documentation Generators #burningkeyboards20 PHP Static Analysis and Documentation Generators #burningkeyboards
20 PHP Static Analysis and Documentation Generators #burningkeyboards
 
The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6The why and how of moving to PHP 5.5/5.6
The why and how of moving to PHP 5.5/5.6
 
Joomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation TestingJoomla Code Quality Control and Automation Testing
Joomla Code Quality Control and Automation Testing
 
Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016Bug Bounty Hunter Methodology - Nullcon 2016
Bug Bounty Hunter Methodology - Nullcon 2016
 
The why and how of moving to php 8
The why and how of moving to php 8The why and how of moving to php 8
The why and how of moving to php 8
 
PHPcon Poland - Static Analysis of PHP Code – How the Heck did I write so man...
PHPcon Poland - Static Analysis of PHP Code – How the Heck did I write so man...PHPcon Poland - Static Analysis of PHP Code – How the Heck did I write so man...
PHPcon Poland - Static Analysis of PHP Code – How the Heck did I write so man...
 
2021.laravelconf.tw.slides2
2021.laravelconf.tw.slides22021.laravelconf.tw.slides2
2021.laravelconf.tw.slides2
 
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)
DotDotPwn Fuzzer - Black Hat 2011 (Arsenal)
 
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblick
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im ÜberblickEin Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblick
Ein Stall voller Trüffelschweine - (PHP-)Profiling-Tools im Überblick
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance
 
ENPM808 Independent Study Final Report - amaster 2019
ENPM808 Independent Study Final Report - amaster 2019ENPM808 Independent Study Final Report - amaster 2019
ENPM808 Independent Study Final Report - amaster 2019
 
BSides IR in Heterogeneous Environment
BSides IR in Heterogeneous EnvironmentBSides IR in Heterogeneous Environment
BSides IR in Heterogeneous Environment
 
Legacy Lowdown - Options When Migrating Solaris Applications
Legacy Lowdown - Options When Migrating Solaris ApplicationsLegacy Lowdown - Options When Migrating Solaris Applications
Legacy Lowdown - Options When Migrating Solaris Applications
 
PHP QA Tools
PHP QA ToolsPHP QA Tools
PHP QA Tools
 
Feldo: Function Event Listing and Dynamic Observing for Detecting and Prevent...
Feldo: Function Event Listing and Dynamic Observing for Detecting and Prevent...Feldo: Function Event Listing and Dynamic Observing for Detecting and Prevent...
Feldo: Function Event Listing and Dynamic Observing for Detecting and Prevent...
 
Backtrack Manual Part6
Backtrack Manual Part6Backtrack Manual Part6
Backtrack Manual Part6
 
Mazda siv - web services
Mazda   siv - web servicesMazda   siv - web services
Mazda siv - web services
 
Secure PHP environment
Secure PHP environmentSecure PHP environment
Secure PHP environment
 
Intrusion Techniques
Intrusion TechniquesIntrusion Techniques
Intrusion Techniques
 

More from X-Coding IT Studio

5 ways B2B e-Commerce landscape is changing
5 ways B2B e-Commerce landscape is changing5 ways B2B e-Commerce landscape is changing
5 ways B2B e-Commerce landscape is changingX-Coding IT Studio
 
7 differences between B2B & B2C e-Commerce
7 differences between B2B & B2C e-Commerce7 differences between B2B & B2C e-Commerce
7 differences between B2B & B2C e-CommerceX-Coding IT Studio
 
Dev o'Clock: wdrożenia e-Commerce - Agile in e-Commerce projects
Dev o'Clock: wdrożenia e-Commerce - Agile in e-Commerce projectsDev o'Clock: wdrożenia e-Commerce - Agile in e-Commerce projects
Dev o'Clock: wdrożenia e-Commerce - Agile in e-Commerce projectsX-Coding IT Studio
 
Dev o'Clock: wdrożenia e-Commerce - Jak przyśpieszyć stronę mobilną
Dev o'Clock: wdrożenia e-Commerce - Jak przyśpieszyć stronę mobilnąDev o'Clock: wdrożenia e-Commerce - Jak przyśpieszyć stronę mobilną
Dev o'Clock: wdrożenia e-Commerce - Jak przyśpieszyć stronę mobilnąX-Coding IT Studio
 
Dev o'Clock: wdrożenia e-Commerce - Magento 2.1 wprowadzenie
Dev o'Clock: wdrożenia e-Commerce - Magento 2.1 wprowadzenieDev o'Clock: wdrożenia e-Commerce - Magento 2.1 wprowadzenie
Dev o'Clock: wdrożenia e-Commerce - Magento 2.1 wprowadzenieX-Coding IT Studio
 
X-Coding - Scrum Story (a.k.a. preventing cars getting fired from cannons)
X-Coding - Scrum Story (a.k.a. preventing cars getting fired from cannons)X-Coding - Scrum Story (a.k.a. preventing cars getting fired from cannons)
X-Coding - Scrum Story (a.k.a. preventing cars getting fired from cannons)X-Coding IT Studio
 

More from X-Coding IT Studio (9)

Christmas in e-Commerce
Christmas in e-CommerceChristmas in e-Commerce
Christmas in e-Commerce
 
Customer Journey Map tips
Customer Journey Map tipsCustomer Journey Map tips
Customer Journey Map tips
 
5 ways B2B e-Commerce landscape is changing
5 ways B2B e-Commerce landscape is changing5 ways B2B e-Commerce landscape is changing
5 ways B2B e-Commerce landscape is changing
 
7 differences between B2B & B2C e-Commerce
7 differences between B2B & B2C e-Commerce7 differences between B2B & B2C e-Commerce
7 differences between B2B & B2C e-Commerce
 
11 e-Commerce marketing tips
11 e-Commerce marketing tips11 e-Commerce marketing tips
11 e-Commerce marketing tips
 
Dev o'Clock: wdrożenia e-Commerce - Agile in e-Commerce projects
Dev o'Clock: wdrożenia e-Commerce - Agile in e-Commerce projectsDev o'Clock: wdrożenia e-Commerce - Agile in e-Commerce projects
Dev o'Clock: wdrożenia e-Commerce - Agile in e-Commerce projects
 
Dev o'Clock: wdrożenia e-Commerce - Jak przyśpieszyć stronę mobilną
Dev o'Clock: wdrożenia e-Commerce - Jak przyśpieszyć stronę mobilnąDev o'Clock: wdrożenia e-Commerce - Jak przyśpieszyć stronę mobilną
Dev o'Clock: wdrożenia e-Commerce - Jak przyśpieszyć stronę mobilną
 
Dev o'Clock: wdrożenia e-Commerce - Magento 2.1 wprowadzenie
Dev o'Clock: wdrożenia e-Commerce - Magento 2.1 wprowadzenieDev o'Clock: wdrożenia e-Commerce - Magento 2.1 wprowadzenie
Dev o'Clock: wdrożenia e-Commerce - Magento 2.1 wprowadzenie
 
X-Coding - Scrum Story (a.k.a. preventing cars getting fired from cannons)
X-Coding - Scrum Story (a.k.a. preventing cars getting fired from cannons)X-Coding - Scrum Story (a.k.a. preventing cars getting fired from cannons)
X-Coding - Scrum Story (a.k.a. preventing cars getting fired from cannons)
 

Recently uploaded

Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...Christina Lin
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptkotipi9215
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software DevelopersVinodh Ram
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...MyIntelliSource, Inc.
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...soniya singh
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...MyIntelliSource, Inc.
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - InfographicHr365.us smith
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEOrtus Solutions, Corp
 

Recently uploaded (20)

Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
ODSC - Batch to Stream workshop - integration of Apache Spark, Cassandra, Pos...
 
chapter--4-software-project-planning.ppt
chapter--4-software-project-planning.pptchapter--4-software-project-planning.ppt
chapter--4-software-project-planning.ppt
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Professional Resume Template for Software Developers
Professional Resume Template for Software DevelopersProfessional Resume Template for Software Developers
Professional Resume Template for Software Developers
 
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
Steps To Getting Up And Running Quickly With MyTimeClock Employee Scheduling ...
 
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
Russian Call Girls in Karol Bagh Aasnvi ➡️ 8264348440 💋📞 Independent Escort S...
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...Call Girls In Mukherjee Nagar 📱  9999965857  🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
Call Girls In Mukherjee Nagar 📱 9999965857 🤩 Delhi 🫦 HOT AND SEXY VVIP 🍎 SE...
 
Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort ServiceHot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
Hot Sexy call girls in Patel Nagar🔝 9953056974 🔝 escort Service
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
Asset Management Software - Infographic
Asset Management Software - InfographicAsset Management Software - Infographic
Asset Management Software - Infographic
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASEBATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
BATTLEFIELD ORM: TIPS, TACTICS AND STRATEGIES FOR CONQUERING YOUR DATABASE
 

Symfony3 w duecie z Vue.js

  • 1. Symfony3 w duecie z Vue.js Maciej Harbuz 31/03/2017 GeekWeek
  • 3. Kluczowy aspekt: user experience (mnogość funkcjonalności w głównym serwisie) Ruch głównie mobilny Wiele źródeł danych jednocześnie (w tym pobieranie danych live z zewnętznych usług) Obciążenie witryny: 300 userów na raz w serwisie (planowane 500 w bliskiej perspektywie) Co wiedzieliśmy przed startem projektu?
  • 6. Dlaczego Symfony 3 ? Duże doświadczenie z Sf2 Sf3 nie stanowi dużej rewolucji w stosunku do Sf2 Kluczowy support wersji (planowany support dla przyszłej wersji 3.4 - 2021 rok)
  • 7. Czego używamy podczas kododwania? phploc - rozmiar projektu lint - sprawdzanie składni PHP_Depend - metryki kodu PHP_MD - wykrywanie złych fragmentów kodu PHP_CodeSniffer - trzymanie standardów kodowania PHP_CPD - wykrywanie duplikatów w kodzie PHP_Unit - odpalanie testów jednostkowych Behat - odpalenie testów funkcjonalnych
  • 8. PHPLOC phploc 3.0.1 by Sebastian Bergmann. Directories 16 Files 34 Size Lines of Code (LOC) 1782 Comment Lines of Code (CLOC) 658 (36.92%) Non-Comment Lines of Code (NCLOC) 1124 (63.08%) Logical Lines of Code (LLOC) 349 (19.58%) Classes 227 (65.04%) Average Class Length 6 Minimum Class Length 0 Maximum Class Length 60 Average Method Length 1 Minimum Method Length 1 Maximum Method Length 6 Functions 0 (0.00%) Average Function Length 0 Not in classes or functions 122 (34.96%) Cyclomatic Complexity Average Complexity per LLOC 0.04 Average Complexity per Class 1.44 Minimum Class Complexity 1.00 Maximum Class Complexity 3.00 Average Complexity per Method 1.16
  • 9. Dependencies Global Accesses 0 Global Constants 0 (0.00%) Global Variables 0 (0.00%) Super-Global Variables 0 (0.00%) Attribute Accesses 98 Non-Static 93 (94.90%) Static 5 (5.10%) Method Calls 117 Non-Static 103 (88.03%) Static 14 (11.97%) Structure Namespaces 17 Interfaces 4 Traits 0 Classes 30 Abstract Classes 1 (3.33%) Concrete Classes 29 (96.67%) Methods 98 Scope Non-Static Methods 94 (95.92%) Static Methods 4 (4.08%) Visibility Public Methods 82 (83.67%) Non-Public Methods 16 (16.33%) Functions 1 Named Functions 0 (0.00%) Anonymous Functions 1 (100.00%) Constants 6 Global Constants 0 (0.00%) Class Constants 6 (100.00%) PHPLOC
  • 10. lint: [apply] Errors parsing /home/www/xcoding/stock/src/AppBundle/Command/PullPriceCommand. php [apply] PHP Parse error: syntax error, unexpected '$this' (T_VARIABLE) in /home/www/xcoding/stock/src/AppBundle/Command/PullPriceCommand. php on line 14 BUILD FAILED /home/www/xcoding/stock/build.xml:120: apply returned: 255 Total time: 0 seconds PHP -l (LINT)
  • 11. PHP_Depend ANDC AHH NOP 22 38 139 1364 251 110187 NOC NOM NOM CALLS FANOUT LOC CYCLO 0.109 0.621 1.727 1.806 0.438 3.658 9.813 0.137 Low Average High
  • 12. 1.0 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0.0 0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 Reader ReportParser Bankier UseCase Form Entity Downloader Filter Loader Company Entity Translator Report Abstraction PHP_Depend
  • 13. src/AppBundle/Command/PullPriceCommand.php:14 Avoid unused local variables such as '$t'. src/AppBundle/Command/PullPriceCommand.php:14 Avoid variables with short names like $t. Configured minimum length is 2. PHP_Mess Detector
  • 14. FILE: src/Application/UseCase/GetReport.php ------------------------------------------------------------------- --- FOUND 5 ERRORS AFFECTING 5 LINES ------------------------------------------------------------------- --- 33 | ERROR | [x] Opening parenthesis of a multi-line function call | | must be the last content on the line 38 | ERROR | [x] Closing parenthesis of a multi-line function call | | must be on a line by itself 41 | ERROR | [x] Inline control structures are not allowed 44 | ERROR | [x] Opening parenthesis of a multi-line function call | | must be the last content on the line 49 | ERROR | [x] Closing parenthesis of a multi-line function call | | must be on a line by itself ------------------------------------------------------------------- --- PHPCBF CAN FIX THE 5 MARKED SNIFF VIOLATIONS AUTOMATICALLY ------------------------------------------------------------------- --- FILE: src/Application/UseCase/PullPrice.php ------------------------------------------------------------------- --- FOUND 1 ERROR AFFECTING 1 LINE ------------------------------------------------------------------- --- 56 | ERROR | Empty CATCH statement detected ------------------------------------------------------------------- PHP_CodeSniffer
  • 15. phpcpd 3.0.0 by Sebastian Bergmann. 0.00% duplicated lines out of 1784 total lines of code. Time: 17 ms, Memory: 3.25MB PHP CPD (Copy/Paste Detector)
  • 16. PHPUnit 5.5.4 by Sebastian Bergmann and contributors. .................................. 34 / 34 (100%) Time: 1.1 seconds, Memory: 9.00MB OK (34 tests, 39 assertions) PHP_Unit
  • 17. Feature: User can check company details and price Background: # features/company.feature:3 Given I am a User # FeatureContext::iAmAUser() Scenario: I want to see all companies as a User # features/company.feature:6 When I list companies # CompanyContext::iListCompanies() Then I see all companies in the system # CompanyContext::iSeeAllCompaniesInTheSystem() Scenario: I want to see company details as a User # features/company.feature:10 When I enter "PKO" company site # CompanyContext::iEnterCompanySite() Then I get "PKO" company details # CompanyContext::iGetCompanyDetails() 12 scenarios (12 passed) 46 steps (46 passed) 0m5.25s (25.79Mb) Behat
  • 18. Dlaczego Vue.js ? Bliska konkurencja Vue.js Angular Angular 2 React.js Wdrażaliśmy już sf2 + angular 2-krotnie Chcieliśmy nauczyć się czegoś nowego Vue.js wygrywał w raportach wydajności Lepsza składnia niż React.js Angular2 jest czymś “zbyt nowym” (2016r.)
  • 19. Przewagi Vue.js #1 - automatyczne odświeżanie przeglądarki body { background: #e0b13a; }
  • 20. Przewagi Vue.js #2 - kompilacja w locie
  • 21. Przewagi Vue.js #3 - wykrywanie błędów
  • 23. Transmisja danych - architektura External APIs for ecommerce ESTIMOTE Firebase Beacony API API SPA ESTIMOTE SDK
  • 25. Marek Kich CEO Maciej Harbuz CTO Kamil Mikołajczyk Sales Manager Renata Mączyńska Sales Manager Konrad Kryłowicz Marketing Manager Areyouready? There are many ways you can contact us, but let’s try the good old ones. x-coding.eu /x-coding-it-studio m.harbuz@x-coding.pl ul. Czysta 4 50-013 Wrocław Poland X-Coding IT Studio