SlideShare a Scribd company logo
1 of 51
Download to read offline
SPEC BDD
IN PHP
@cakper
13/06/13 GliwiceSpec BDD IN PHP
Software Engineer @SensioLabsUK
Silesia PHP User Group // Spug.pl
#symfony-pl // Symfonylab.pl
@CAKPER
13/06/13 GliwiceSpec BDD IN PHP
WHAT IS TEST?
13/06/13 GliwiceSpec BDD IN PHP
WHY DO WE TEST?
13/06/13 GliwiceSpec BDD IN PHP
HOW DO WE TEST?
13/06/13 GliwiceSpec BDD IN PHP
WE MAKE MISTAKES
SO WE HAVE TO TEST
13/06/13 GliwiceSpec BDD IN PHP
TEST
DRIVEN
DEVELOPMENT
Kent Beck // 2003
Extreme Programming // 1999
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #1
How to test something that
does not exist?
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #1
TEST == Specification
Driven
Development
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #1
Communication
is our ProblemNot testing itself
13/06/13 GliwiceSpec BDD IN PHP
BEHAVIOUR
DRIVEN
DEVELOPMENT
Dan North // 2006
13/06/13 GliwiceSpec BDD IN PHP
BDD
Naming
ConvenTions
tools
Better
{
13/06/13 GliwiceSpec BDD IN PHP
BDD
= TDD v2.0‘TDD DONE RIGHT’
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #2
Writing specifications
takes time
Time is a cost
13/06/13 GliwiceSpec BDD IN PHP
you can learn it
13/06/13 GliwiceSpec BDD IN PHP
DELIBERATE PRACTICE
Pair Programming
Code Kata
Code Club
Code Retreat
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #3
Why are you sure that your
test is correct?
13/06/13 GliwiceSpec BDD IN PHP
TDD CYCLE
RED
GREENREFACTOR
13/06/13 GliwiceSpec BDD IN PHP
3 LAWS OF TDD
1.You are not allowed to write any production
code unless it is to make a failing unit test pass.
2.You are not allowed to write any more of a unit
test than is sufficient to fail; and compilation
failures are failures.
3.You are not allowed to write any more
production code than is sufficient to pass the one
failing unit test.
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #4
When and how to Refactor?
13/06/13 GliwiceSpec BDD IN PHP
‘Refactoring w/o tests
= Refucktoring’
PROBLEM #4
13/06/13 GliwiceSpec BDD IN PHP
4 RULES OF SIMPLE DESING
1.Passes all the tests.
2.Express every idea we need to express.
3.Contains no duplication.
4.Minimized the number of classes,
methods and other moving parts.
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #5
How to test dependencies?
13/06/13 GliwiceSpec BDD IN PHP
DO NOT TEST...
13/06/13 GliwiceSpec BDD IN PHP
TEST DOUBLES
DUMMies
STUBS
MOCKS
SPIES
13/06/13 GliwiceSpec BDD IN PHP
Mocking should be easy
very easy
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #6
Code Coverage
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #6
Useful to
find dead code ;)
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #7
STORY BDD
vs
Spec BDD
13/06/13 GliwiceSpec BDD IN PHP
STORY BDD
description of
business-targeted
application behavior
13/06/13 GliwiceSpec BDD IN PHP
SPEC BDD
specification for
low-level implementation
13/06/13 GliwiceSpec BDD IN PHP
PROBLEM #8
PHP UNIT
By Sebastian Bergmann©
13/06/13 GliwiceSpec BDD IN PHP
PHP Spec 2
13/06/13 GliwiceSpec BDD IN PHP
PHP SPEC 2
Framework Spec BDD
@_md & @everzet
Prophecy
13/06/13 GliwiceSpec BDD IN PHP
PHP SPEC 2
EASY to use
TDD-Cycle oriented
Behaviour focused
13/06/13 GliwiceSpec BDD IN PHP
PHP SPEC 2
Test Case
Specification
13/06/13 GliwiceSpec BDD IN PHP
PHP SPEC 2
Test
example
13/06/13 GliwiceSpec BDD IN PHP
PHP SPEC 2
Assert
Expectation
13/06/13 GliwiceSpec BDD IN PHP
PHP SPEC 2
class MarkdownSpec extends ObjectBehavior
{
function it_is_initializable()
{
$this->shouldHaveType('Markdown');
}
}
13/06/13 GliwiceSpec BDD IN PHP
MATCHERS
Identity (===):
shouldReturn()
shouldBe()
shouldEqual()
shouldBeEqualTo()
13/06/13 GliwiceSpec BDD IN PHP
MATCHERS
Comparison (==):
shouldBeLike()
13/06/13 GliwiceSpec BDD IN PHP
MATCHERS
Throw:
shouldThrow(‘Exception’)
->duringSomeMethod()
13/06/13 GliwiceSpec BDD IN PHP
MATCHERS
Type:
shouldBeAnInstanceOf()
shouldReturnAnInstanceOf()
shouldHaveType()
13/06/13 GliwiceSpec BDD IN PHP
MATCHERS
Object State:
shouldHave**()
13/06/13 GliwiceSpec BDD IN PHP
TEST DOUBLES
/**
* @param MarkdownStream $stream
*/
function it_adds_a_end_of_list_to_markup($stream)
{
$stream->getNextLine()->willReturn("");
$this->format(" * Hi, there", $stream)
->shouldReturn("</li></ul>");
}
13/06/13 GliwiceSpec BDD IN PHP
LET & LETGO
function let($die)
{
$die->beADoubleOf('Die');
$this->beConstructedWith($die);
}
function it_live_and_let_die($die)
{
$this->liveAndLet()->shouldReturn($die);
}
function letgo(){}
13/06/13 GliwiceSpec BDD IN PHP
PHP SPEC 2
{
"require-dev": {
"phpspec/phpspec": "2.0.*@dev"
},
"config": {
"bin-dir": "bin"
},
"autoload": {"psr-0": {"": "src"}}
}
13/06/13 GliwiceSpec BDD IN PHP
Demo
13/06/13 GliwiceSpec BDD IN PHP
Questions?
13/06/13 GliwiceSpec BDD IN PHP
WE ARE HIRING!
Software Engineer
Front-end Engineer
Software Engineer in test
PRoject manager
Business analyst
www.sensiolabs.co.uk
www.inviqa.com
THANK YOU!
@cakper

More Related Content

What's hot

Tiền xử lí dữ liệu bằng weka và lập trình tiền xử lí
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử líTiền xử lí dữ liệu bằng weka và lập trình tiền xử lí
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử líKhoa Hồ Anh
 
Tóm tắt về track, sector, cluster, cylinder
Tóm tắt về track, sector, cluster, cylinderTóm tắt về track, sector, cluster, cylinder
Tóm tắt về track, sector, cluster, cylinderhoamonkhach
 
grand theft auto cheats for pc.
grand theft auto cheats for pc.grand theft auto cheats for pc.
grand theft auto cheats for pc.umaira_slt
 
Chess with Java
Chess with JavaChess with Java
Chess with JavaLam To
 
Coding Standard (Chuẩn Mã Nguồn)
Coding Standard (Chuẩn Mã Nguồn)Coding Standard (Chuẩn Mã Nguồn)
Coding Standard (Chuẩn Mã Nguồn)Hong Le Van
 
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.comBài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.commai_non
 
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...MasterCode.vn
 
Hệ thống thông tin quản lý-website tin tức nhà đất
Hệ thống thông tin quản lý-website tin tức nhà đấtHệ thống thông tin quản lý-website tin tức nhà đất
Hệ thống thông tin quản lý-website tin tức nhà đấtKali Back Tracker
 
Giáo trình Cơ sở dữ liệu.pdf
Giáo trình Cơ sở dữ liệu.pdfGiáo trình Cơ sở dữ liệu.pdf
Giáo trình Cơ sở dữ liệu.pdfMan_Ebook
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTMasterCode.vn
 
Giải pháp xử lý big data trên apache spark
Giải pháp xử lý big data trên apache sparkGiải pháp xử lý big data trên apache spark
Giải pháp xử lý big data trên apache sparkLinh Ngoc
 

What's hot (20)

Đề tài: Chương trình quản lý cho thuê nhà của cơ sở dịch vụ, HOT
Đề tài: Chương trình quản lý cho thuê nhà của cơ sở dịch vụ, HOTĐề tài: Chương trình quản lý cho thuê nhà của cơ sở dịch vụ, HOT
Đề tài: Chương trình quản lý cho thuê nhà của cơ sở dịch vụ, HOT
 
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử lí
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử líTiền xử lí dữ liệu bằng weka và lập trình tiền xử lí
Tiền xử lí dữ liệu bằng weka và lập trình tiền xử lí
 
Luận văn: Phương pháp tấn công chữ ký số: Rsa,Elgamal,Dss
Luận văn: Phương pháp tấn công chữ ký số: Rsa,Elgamal,DssLuận văn: Phương pháp tấn công chữ ký số: Rsa,Elgamal,Dss
Luận văn: Phương pháp tấn công chữ ký số: Rsa,Elgamal,Dss
 
Luận văn: Khai phá dữ liệu; Phân cụm dữ liệu, HAY
Luận văn: Khai phá dữ liệu; Phân cụm dữ liệu, HAYLuận văn: Khai phá dữ liệu; Phân cụm dữ liệu, HAY
Luận văn: Khai phá dữ liệu; Phân cụm dữ liệu, HAY
 
Coding standard
Coding standardCoding standard
Coding standard
 
Tóm tắt về track, sector, cluster, cylinder
Tóm tắt về track, sector, cluster, cylinderTóm tắt về track, sector, cluster, cylinder
Tóm tắt về track, sector, cluster, cylinder
 
grand theft auto cheats for pc.
grand theft auto cheats for pc.grand theft auto cheats for pc.
grand theft auto cheats for pc.
 
Chess with Java
Chess with JavaChess with Java
Chess with Java
 
Coding Standard (Chuẩn Mã Nguồn)
Coding Standard (Chuẩn Mã Nguồn)Coding Standard (Chuẩn Mã Nguồn)
Coding Standard (Chuẩn Mã Nguồn)
 
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.comBài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
Bài giảng môn Cơ sở dữ liệu - truongkinhtethucpham.com
 
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
Bài 3: Xác định yêu cầu hệ thống & Phân tích quy trình xử lý nghiệp vụ - Giáo...
 
Đề tài: Bài toán và các giải thuật theo tiếp cận phân cấp, HOT
Đề tài: Bài toán và các giải thuật theo tiếp cận phân cấp, HOTĐề tài: Bài toán và các giải thuật theo tiếp cận phân cấp, HOT
Đề tài: Bài toán và các giải thuật theo tiếp cận phân cấp, HOT
 
Hệ thống thông tin quản lý-website tin tức nhà đất
Hệ thống thông tin quản lý-website tin tức nhà đấtHệ thống thông tin quản lý-website tin tức nhà đất
Hệ thống thông tin quản lý-website tin tức nhà đất
 
Giáo trình Cơ sở dữ liệu.pdf
Giáo trình Cơ sở dữ liệu.pdfGiáo trình Cơ sở dữ liệu.pdf
Giáo trình Cơ sở dữ liệu.pdf
 
Đề tài: Hệ thống hỗ trợ đăng ký đề tài nghiên cứu khoa học trên web
Đề tài: Hệ thống hỗ trợ đăng ký đề tài nghiên cứu khoa học trên webĐề tài: Hệ thống hỗ trợ đăng ký đề tài nghiên cứu khoa học trên web
Đề tài: Hệ thống hỗ trợ đăng ký đề tài nghiên cứu khoa học trên web
 
Luận văn: Một số mô hình học máy trong phân loại câu hỏi, HAY
Luận văn: Một số mô hình học máy trong phân loại câu hỏi, HAYLuận văn: Một số mô hình học máy trong phân loại câu hỏi, HAY
Luận văn: Một số mô hình học máy trong phân loại câu hỏi, HAY
 
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPTBài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
Bài 2: Các khái niệm trong CSDL quan hệ - Giáo trình FPT
 
Giải pháp xử lý big data trên apache spark
Giải pháp xử lý big data trên apache sparkGiải pháp xử lý big data trên apache spark
Giải pháp xử lý big data trên apache spark
 
Đề tài: Chương trình quản lý bệnh nhân tại bệnh viện Tâm Phúc
Đề tài: Chương trình quản lý bệnh nhân tại bệnh viện Tâm PhúcĐề tài: Chương trình quản lý bệnh nhân tại bệnh viện Tâm Phúc
Đề tài: Chương trình quản lý bệnh nhân tại bệnh viện Tâm Phúc
 
Đề tài: Phân đoạn ảnh dựa trên phương pháp phát hiện biên, HAY
Đề tài: Phân đoạn ảnh dựa trên phương pháp phát hiện biên, HAYĐề tài: Phân đoạn ảnh dựa trên phương pháp phát hiện biên, HAY
Đề tài: Phân đoạn ảnh dựa trên phương pháp phát hiện biên, HAY
 

Viewers also liked

PhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examplesPhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examplesMarcello Duarte
 
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)Joshua Warren
 
Emergent design with phpspec
Emergent design with phpspecEmergent design with phpspec
Emergent design with phpspecMarcello Duarte
 
Object Calisthenics Applied to PHP
Object Calisthenics Applied to PHPObject Calisthenics Applied to PHP
Object Calisthenics Applied to PHPGuilherme Blanco
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix itRafael Dohms
 
AngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSAngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSKenneth Ceyer
 
PHPSpec - the only Design Tool you need - 4Developers
PHPSpec - the only Design Tool you need - 4DevelopersPHPSpec - the only Design Tool you need - 4Developers
PHPSpec - the only Design Tool you need - 4DevelopersKacper Gunia
 
TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016CiaranMcNulty
 

Viewers also liked (9)

PhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examplesPhpSpec 2.0 ilustrated by examples
PhpSpec 2.0 ilustrated by examples
 
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)
 
Emergent design with phpspec
Emergent design with phpspecEmergent design with phpspec
Emergent design with phpspec
 
Object Calisthenics Applied to PHP
Object Calisthenics Applied to PHPObject Calisthenics Applied to PHP
Object Calisthenics Applied to PHP
 
Mocking Demystified
Mocking DemystifiedMocking Demystified
Mocking Demystified
 
Your code sucks, let's fix it
Your code sucks, let's fix itYour code sucks, let's fix it
Your code sucks, let's fix it
 
AngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJSAngularJS 2, version 1 and ReactJS
AngularJS 2, version 1 and ReactJS
 
PHPSpec - the only Design Tool you need - 4Developers
PHPSpec - the only Design Tool you need - 4DevelopersPHPSpec - the only Design Tool you need - 4Developers
PHPSpec - the only Design Tool you need - 4Developers
 
TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016TDD with PhpSpec - Lone Star PHP 2016
TDD with PhpSpec - Lone Star PHP 2016
 

Similar to SpecBDD in PHP

Writing Performant Front-end Code
Writing Performant Front-end CodeWriting Performant Front-end Code
Writing Performant Front-end CodeLyubomir Bozhinov
 
NodeWay in my project & sails.js
NodeWay in my project & sails.jsNodeWay in my project & sails.js
NodeWay in my project & sails.jsDmytro Ovcharenko
 
apidays LIVE Hong Kong - Let's get started development of API client library ...
apidays LIVE Hong Kong - Let's get started development of API client library ...apidays LIVE Hong Kong - Let's get started development of API client library ...
apidays LIVE Hong Kong - Let's get started development of API client library ...apidays
 
Droidcon Italy 2014 on Train
Droidcon Italy 2014 on TrainDroidcon Italy 2014 on Train
Droidcon Italy 2014 on TrainGiuseppe Cerratti
 
Cross Platform Mobile Development for Business Applications
Cross Platform Mobile Development for Business ApplicationsCross Platform Mobile Development for Business Applications
Cross Platform Mobile Development for Business ApplicationsDavid Karlsson
 
Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...Aurélien Pupier
 
Atlassian: The latest and greatest - May/June 2013
Atlassian: The latest and greatest - May/June 2013Atlassian: The latest and greatest - May/June 2013
Atlassian: The latest and greatest - May/June 2013Sven Peters
 
Rise of the Nodebots
Rise of the NodebotsRise of the Nodebots
Rise of the NodebotsJoel Lord
 
Puppet Camp Amsterdam 2015: Improving In Production Puppet Code Without Break...
Puppet Camp Amsterdam 2015: Improving In Production Puppet Code Without Break...Puppet Camp Amsterdam 2015: Improving In Production Puppet Code Without Break...
Puppet Camp Amsterdam 2015: Improving In Production Puppet Code Without Break...Puppet
 
Beginners guide-to-reverse-engineering-android-apps-pau-oliva-fora-viaforensi...
Beginners guide-to-reverse-engineering-android-apps-pau-oliva-fora-viaforensi...Beginners guide-to-reverse-engineering-android-apps-pau-oliva-fora-viaforensi...
Beginners guide-to-reverse-engineering-android-apps-pau-oliva-fora-viaforensi...viaForensics
 
Java and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemJava and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemRafael Winterhalter
 
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Philip Tellis
 
Montreal.rb ruby debugging basics - march 20th 2012
Montreal.rb   ruby debugging basics - march 20th 2012Montreal.rb   ruby debugging basics - march 20th 2012
Montreal.rb ruby debugging basics - march 20th 2012Rafael Rosa
 
Flutter beers and pizza
Flutter beers and pizzaFlutter beers and pizza
Flutter beers and pizzaJon Durán
 
Pwning mobile apps without root or jailbreak
Pwning mobile apps without root or jailbreakPwning mobile apps without root or jailbreak
Pwning mobile apps without root or jailbreakAbraham Aranguren
 
Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min. Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min. David Gómez García
 

Similar to SpecBDD in PHP (20)

PhpStorm for WordPress
PhpStorm for WordPressPhpStorm for WordPress
PhpStorm for WordPress
 
Code Dojo
Code DojoCode Dojo
Code Dojo
 
Writing Performant Front-end Code
Writing Performant Front-end CodeWriting Performant Front-end Code
Writing Performant Front-end Code
 
NodeWay in my project & sails.js
NodeWay in my project & sails.jsNodeWay in my project & sails.js
NodeWay in my project & sails.js
 
apidays LIVE Hong Kong - Let's get started development of API client library ...
apidays LIVE Hong Kong - Let's get started development of API client library ...apidays LIVE Hong Kong - Let's get started development of API client library ...
apidays LIVE Hong Kong - Let's get started development of API client library ...
 
Droidcon Italy 2014 on Train
Droidcon Italy 2014 on TrainDroidcon Italy 2014 on Train
Droidcon Italy 2014 on Train
 
Cross Platform Mobile Development for Business Applications
Cross Platform Mobile Development for Business ApplicationsCross Platform Mobile Development for Business Applications
Cross Platform Mobile Development for Business Applications
 
Phpers day 2019
Phpers day 2019Phpers day 2019
Phpers day 2019
 
Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...Feedback from an eclipse plugin developer to provide support to large set of ...
Feedback from an eclipse plugin developer to provide support to large set of ...
 
Atlassian: The latest and greatest - May/June 2013
Atlassian: The latest and greatest - May/June 2013Atlassian: The latest and greatest - May/June 2013
Atlassian: The latest and greatest - May/June 2013
 
Rise of the Nodebots
Rise of the NodebotsRise of the Nodebots
Rise of the Nodebots
 
Bow
BowBow
Bow
 
Puppet Camp Amsterdam 2015: Improving In Production Puppet Code Without Break...
Puppet Camp Amsterdam 2015: Improving In Production Puppet Code Without Break...Puppet Camp Amsterdam 2015: Improving In Production Puppet Code Without Break...
Puppet Camp Amsterdam 2015: Improving In Production Puppet Code Without Break...
 
Beginners guide-to-reverse-engineering-android-apps-pau-oliva-fora-viaforensi...
Beginners guide-to-reverse-engineering-android-apps-pau-oliva-fora-viaforensi...Beginners guide-to-reverse-engineering-android-apps-pau-oliva-fora-viaforensi...
Beginners guide-to-reverse-engineering-android-apps-pau-oliva-fora-viaforensi...
 
Java and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystemJava and OpenJDK: disecting the ecosystem
Java and OpenJDK: disecting the ecosystem
 
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
Frontend Performance: Beginner to Expert to Crazy Person (San Diego Web Perf ...
 
Montreal.rb ruby debugging basics - march 20th 2012
Montreal.rb   ruby debugging basics - march 20th 2012Montreal.rb   ruby debugging basics - march 20th 2012
Montreal.rb ruby debugging basics - march 20th 2012
 
Flutter beers and pizza
Flutter beers and pizzaFlutter beers and pizza
Flutter beers and pizza
 
Pwning mobile apps without root or jailbreak
Pwning mobile apps without root or jailbreakPwning mobile apps without root or jailbreak
Pwning mobile apps without root or jailbreak
 
Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min. Measuring Code Quality in WTF/min.
Measuring Code Quality in WTF/min.
 

More from Kacper Gunia

How a large corporation used Domain-Driven Design to replace a loyalty system
How a large corporation used Domain-Driven Design to replace a loyalty systemHow a large corporation used Domain-Driven Design to replace a loyalty system
How a large corporation used Domain-Driven Design to replace a loyalty systemKacper Gunia
 
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learned
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learnedRebuilding Legacy Apps with Domain-Driven Design - Lessons learned
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learnedKacper Gunia
 
The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016Kacper Gunia
 
The top 10 things that any pro PHP developer should be doing
The top 10 things that any pro PHP developer should be doingThe top 10 things that any pro PHP developer should be doing
The top 10 things that any pro PHP developer should be doingKacper Gunia
 
Embrace Events and let CRUD die
Embrace Events and let CRUD dieEmbrace Events and let CRUD die
Embrace Events and let CRUD dieKacper Gunia
 
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers CracowForget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers CracowKacper Gunia
 
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Kacper Gunia
 
OmniFocus - the #1 ‘Getting Things Done’ tool
OmniFocus - the #1 ‘Getting Things Done’ toolOmniFocus - the #1 ‘Getting Things Done’ tool
OmniFocus - the #1 ‘Getting Things Done’ toolKacper Gunia
 
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK MeetupScaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK MeetupKacper Gunia
 
Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!Kacper Gunia
 
Dutch PHP Conference - PHPSpec 2 - The only Design Tool you need
Dutch PHP Conference - PHPSpec 2 - The only Design Tool you needDutch PHP Conference - PHPSpec 2 - The only Design Tool you need
Dutch PHP Conference - PHPSpec 2 - The only Design Tool you needKacper Gunia
 
November Camp - Spec BDD with PHPSpec 2
November Camp - Spec BDD with PHPSpec 2November Camp - Spec BDD with PHPSpec 2
November Camp - Spec BDD with PHPSpec 2Kacper Gunia
 
Dependency Injection in PHP
Dependency Injection in PHPDependency Injection in PHP
Dependency Injection in PHPKacper Gunia
 

More from Kacper Gunia (14)

How a large corporation used Domain-Driven Design to replace a loyalty system
How a large corporation used Domain-Driven Design to replace a loyalty systemHow a large corporation used Domain-Driven Design to replace a loyalty system
How a large corporation used Domain-Driven Design to replace a loyalty system
 
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learned
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learnedRebuilding Legacy Apps with Domain-Driven Design - Lessons learned
Rebuilding Legacy Apps with Domain-Driven Design - Lessons learned
 
The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016The IoC Hydra - Dutch PHP Conference 2016
The IoC Hydra - Dutch PHP Conference 2016
 
The top 10 things that any pro PHP developer should be doing
The top 10 things that any pro PHP developer should be doingThe top 10 things that any pro PHP developer should be doing
The top 10 things that any pro PHP developer should be doing
 
Embrace Events and let CRUD die
Embrace Events and let CRUD dieEmbrace Events and let CRUD die
Embrace Events and let CRUD die
 
The IoC Hydra
The IoC HydraThe IoC Hydra
The IoC Hydra
 
Forget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers CracowForget about Index.php and build you applications around HTTP - PHPers Cracow
Forget about Index.php and build you applications around HTTP - PHPers Cracow
 
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
Domain-driven Design in PHP and Symfony - Drupal Camp Wroclaw!
 
OmniFocus - the #1 ‘Getting Things Done’ tool
OmniFocus - the #1 ‘Getting Things Done’ toolOmniFocus - the #1 ‘Getting Things Done’ tool
OmniFocus - the #1 ‘Getting Things Done’ tool
 
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK MeetupScaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
Scaling Symfony2 apps with RabbitMQ - Symfony UK Meetup
 
Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!Forget about index.php and build you applications around HTTP!
Forget about index.php and build you applications around HTTP!
 
Dutch PHP Conference - PHPSpec 2 - The only Design Tool you need
Dutch PHP Conference - PHPSpec 2 - The only Design Tool you needDutch PHP Conference - PHPSpec 2 - The only Design Tool you need
Dutch PHP Conference - PHPSpec 2 - The only Design Tool you need
 
November Camp - Spec BDD with PHPSpec 2
November Camp - Spec BDD with PHPSpec 2November Camp - Spec BDD with PHPSpec 2
November Camp - Spec BDD with PHPSpec 2
 
Dependency Injection in PHP
Dependency Injection in PHPDependency Injection in PHP
Dependency Injection in PHP
 

Recently uploaded

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 

Recently uploaded (20)

DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 

SpecBDD in PHP