SlideShare une entreprise Scribd logo
1  sur  143
Télécharger pour lire hors ligne
Sylius and API Platform


The story of integration
Foreword
Application & Infrastructure


Hexagonal
3 topcis


Application, API Design, Testing
What did we want to
achieve?
Become modern,


API-
fi
rst e-commerce
Deliver a new quality in the
headless e-commerce
Be closer to Symfony
Always up-to-date
documentation
Application architecture
Photo by Marc-Olivier Jodoin on Unsplash
How to preserve Api Platform
usage easiness and Sylius
fl
exibility?
How to handle typical create,
update and read operations?
CRUD
Easy to setup
Easy to setup


Easy to use
Easy to setup


Easy to use


Easy to extend
Familiar for most developers
How?
#[ORMEntity
]

#[ApiResource
]

class Produc
t

{

/** */
}
Cons
Harder to bend to business
expectations
How to handle business
expectations?
Commands
Super
fl
exible


Gives possible to defer execution


Decouples layers
Infrastructure
Application
Infrastructure
Command
Application
Infrastructure
Handler
Command
Application
Infrastructure
Handler
Command
Messenger
Application
How?
class AddItemToCar
t

{

public ProductVariant $productVariant
;

public int $quantity;
}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{

$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart;
}

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{
$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{

$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{

$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{

$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart;
}

}
One command


One handler
Transaction & Validation
Middleware's
Super
fl
exible


Gives possible to defer execution


Decouples layers
Are they separated?
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{

$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart;
}

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{
$cart = $this->cartContext->getCart()
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
class AddItemToCar
t

{

public Order $order;
public ProductVariant $productVariant
;

public int $quantity
;

}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{
$cart = $command->order
;

$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
No session/request data


in handlers and below
Command should contain


all information required


to perform an action
Super
fl
exible


Gives possible to defer execution or
send it outside


Decouples layers
Can we defer it?
class AddItemToCar
t

{

public Order $order
;

public ProductVariant $productVariant
;

public int $quantity
;

}
class AddItemToCar
t

{

public string $orderToken;
public string $productVariantCode
;

public int $quantity;
}
final class AddItemToCartHandle
r

{

public function __invoke(AddItemToCart $command): Orde
r

{
$productVariant = $this->productVariantRepository->findOneBy
(

['code' => $addItemToCart->productVariantCode
]

)
;

$cart = $this->orderRepository->findCartByTokenValue
(

$addItemToCart->orderTokenValu
e

);
$cartItem = $this->cartItemFactory->createNew()
;

$cartItem->setVariant($command->productVariant)
;

$this->orderItemQuantityModifier->modify
(

$cartItem,
 

$command->quantit
y

)
;

$this->orderModifier->addToOrder($cart, $cartItem)
;

return $cart
;

}

}
Commands with raw data only
But where this data came from?
DataTransformer?
Every “new” keyword couples you to
given implementation
Not relevant for 87% of developers
Faked Data Institute ®
Command enrichment!
class AddItemToCart implements OrderTokenValueAwareInterfac
e

{

public ?string $orderTokenValue
;

public string $productVariantCode
;

public int $quantity
;

public function getOrderTokenValue(): ?strin
g

{

return $this->orderTokenValue
;

}

public function setOrderTokenValue(?string $orderTokenValue): voi
d

{

$this->orderTokenValue = $orderTokenValue
;

}

}
final class OrderTokenValueAwareInputCommandDataTransforme
r

implements CommandDataTransformerInterfac
e

{

public function transform($object, string $to, array $context = []
)

{

/** @var OrderInterface $cart *
/

$cart = $context['object_to_populate']
;

$object->setOrderTokenValue($cart->getTokenValue())
;

return $object
;

}

public function supportsTransformation($object): boo
l

{

return $object instanceof OrderTokenValueAwareInterface
;

}

}
DataTransformer


vs


DataEnrichment
Current user
Current user


Current locale
Current user


Current locale


Current channel(Sylius speci
fi
c)
Current user


Current locale


Current channel(Sylius speci
fi
c)


Current order
Current user


Current locale


Current channel(Sylius speci
fi
c)


Current order
No session/request data


in handlers and below
Enrichments provide better class
extendibility for framework
Interfaces as contracts
Cons
More complicated architecture


Steeper learning curve
API Design
Photo by Halacious on Unsplash
How to model our API?
IRI usage
{

"@context": "/api/v2/contexts/ProductVariant"
,

"@id": "/api/v2/shop/product-variants/MUG_BLUE"
,

"@type": "ProductVariant"
,

"id": @integer@
,

"onHand": 10
,

"code": "MUG_BLUE"
,

"currentStock": 5
,

"product": "/api/v2/shop/products/MUG"
,

"optionValues":
[

"/api/v2/shop/product-option-values/COLOR_BLUE
"

]
,

"translations": {...}
,

"price": 2000
,

"originalPrice": 2000
,

"inStock": tru
e

}
{

"@context": "/api/v2/contexts/ProductVariant"
,

"@id": "/api/v2/shop/product-variants/MUG_BLUE"
,

"@type": "ProductVariant"
,

"id": @integer@
,

"onHand": 10
,

"code": "MUG_BLUE"
,

"currentStock": 5
,

"product": "/api/v2/shop/products/MUG"
,

"optionValues":
[

"/api/v2/shop/product-option-values/COLOR_BLUE
"

]
,

"translations": {...}
,

"price": 2000
,

"originalPrice": 2000
,

"inStock": tru
e

}
{

"@context": "/api/v2/contexts/ProductVariant"
,

"@id": "/api/v2/shop/product-variants/MUG_BLUE"
,

"@type": "ProductVariant"
,

"id": @integer@
,

"onHand": 10
,

"code": "MUG_BLUE"
,

"currentStock": 5
,

"product": "/api/v2/shop/products/MUG"
,

"optionValues":
[

"/api/v2/shop/product-option-values/COLOR_BLUE
"

]
,

"translations": {...}
,

"price": 2000
,

"originalPrice": 2000
,

"inStock": tru
e

}
{

"@context": "/api/v2/contexts/ProductVariant"
,

"@id": "/api/v2/shop/product-variants/MUG_BLUE"
,

"@type": "ProductVariant"
,

"id": @integer@
,

"onHand": 10
,

"code": "MUG_BLUE"
,

"currentStock": 5
,

"product": "/api/v2/shop/products/MUG"
,

"optionValues":
[

"/api/v2/shop/product-option-values/COLOR_BLUE
"

]
,

"translations": {...}
,

"price": 2000
,

"originalPrice": 2000
,

"inStock": tru
e

}
class AddItemToCar
t

{

public string $orderToken;
public string $productVariantCode
;

public int $quantity;
}
How?
<class name="SyliusBundleApiBundleCommandCartAddItemToCart">
<attribute name="productVariantCode
"

serialized-name="productVariant
"

>

<group>shop:cart:add_item</group
>

</attribute
>

<attribute name="quantity"
>

<group>shop:cart:add_item</group
>

</attribute
>

</class>
class AddItemToCart implements IriToIdenti
fi
erConversionAwareInterfac
e

{

public string $orderToken
;

public string $productVariantCode
;

public int $quantity
;

}
Database =/= resource
Reset password
<resource
 

class=“SyliusBundleApiBundleCommandResetPassword
"

shortName="ResetPasswordRequest"
>

<collectionOperations
>

<collectionOperation name="shop_create_reset_password_request"
>

<attribute name="method">POST</attribute
>

<attribute name="path">/reset-password-requests</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandRequestResetPasswordToke
n

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</collectionOperation
>

</collectionOperations
>

<itemOperations
>

<itemOperation name="shop_update_reset_password_request"
>

<attribute name="method">PATCH</attribute
>

<attribute name="path">/reset-password-requests/{id}</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandResetPasswor
d

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</itemOperation
>

</itemOperations
>

</resource>
<resource
 

class=“SyliusBundleApiBundleCommandResetPassword
"

shortName="ResetPasswordRequest"
>

<collectionOperations
>

<collectionOperation name="shop_create_reset_password_request">
<attribute name="method">POST</attribute
>

<attribute name="path">/reset-password-requests</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandRequestResetPasswordToke
n

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</collectionOperation
>

</collectionOperations
>

<itemOperations
>

<itemOperation name="shop_update_reset_password_request"
>

<attribute name="method">PATCH</attribute
>

<attribute name="path">/reset-password-requests/{id}</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandResetPasswor
d

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</itemOperation
>

</itemOperations
>

</resource>
<resource
 

class=“SyliusBundleApiBundleCommandResetPassword
"

shortName="ResetPasswordRequest"
>

<collectionOperations
>

<collectionOperation name="shop_create_reset_password_request"
>

<attribute name="method">POST</attribute
>

<attribute name="path">/reset-password-requests</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandRequestResetPasswordToke
n

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</collectionOperation
>

</collectionOperations
>

<itemOperations
>

<itemOperation name="shop_update_reset_password_request">
<attribute name="method">PATCH</attribute
>

<attribute name="path">/reset-password-requests/{id}</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandResetPasswor
d

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</itemOperation
>

</itemOperations
>

</resource>
<resource
 

class=“SyliusBundleApiBundleCommandResetPassword
"

shortName="ResetPasswordRequest"
>

<collectionOperations
>

<collectionOperation name="shop_create_reset_password_request"
>

<attribute name="method">POST</attribute
>

<attribute name="path">/reset-password-requests</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandRequestResetPasswordToke
n

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</collectionOperation
>

</collectionOperations
>

<itemOperations
>

<itemOperation name="shop_update_reset_password_request"
>

<attribute name="method">PATCH</attribute
>

<attribute name="path">/reset-password-requests/{id}</attribute
>

<attribute name=“input"
>

SyliusBundleApiBundleCommandResetPasswor
d

</attribute
>

<attribute name="output">false</attribute
>

<attribute name="status">202</attribute
>

</itemOperation
>

</itemOperations
>

</resource>
Testing Architecture
Photo by Danist Soh on Unsplash
Sylius aka BDD Warriors
1500+ scenario
s

17000+ steps
~2000 scenario
s

~22000 steps
Behat
Business oriented scenarios
Gherkin notation
Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background:
Given there is a user "ted@example.com" identi
fi
ed by "bear
"

Scenario: Sign in with email and passwor
d

When I want to log in with the "ted@example.com" email and the "bear" passwor
d

Then I should be logged in
Great to keep conversation
about features
Abstraction over the
implementation
How to test our new
infrastructure?
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background
:

Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @ap
i

Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background
:

Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @api
Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background
:

Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @ap
i

Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background
:

Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @ap
i

Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background
:

Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @ap
i

Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background:
Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @ap
i

Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
/*
*

* @When I log i
n

*
/

public function iLogIn(
)

{

$this->loginPage->logIn()
;

}
@customer_logi
n

Feature: Signing in to the stor
e

In order to view my order
s

As a Visito
r

I want to be able to log in to the stor
e

Background:
Given the store operates on a single channel in "United States
"

And there is a user "ted@example.com" identi
fi
ed by "bear
"

@ui @api
Scenario: Sign in with email and passwor
d

When I want to log i
n

And I specify the username as "ted@example.com
"

And I specify the password as "bear
"

And I log i
n

Then I should be logged in
/*
*

* @When I log i
n

*
/

public function iLogIn(): voi
d

{

$this->client->call()
;

}
Behat as migration tool
Cons
Implementation overhead


New syntax to be familiar with
We didn’t seen our APIs
that much
How to keep contracts and
design our APIs?
PHPUnit
Whole response easily visible
{

"@context": "/api/v2/contexts/Payment"
,

"@id": "/api/v2/shop/payments/@integer@"
,

"@type": "Payment"
,

"order": "/api/v2/shop/orders/nAWw2jewpA"
,

"id": @integer@
,

"method":
{

"@id": "/api/v2/shop/payment-methods/CASH_ON_DELIVERY"
,

"@type": "PaymentMethod"
,

"name": "Cash on delivery
"

}
,

"currencyCode": "USD"
,

"amount": 6500
,

"state": "new"
,

"details": []
,

"createdAt": "@string@"
,

"updatedAt": "@string@
"

}
It will fail if anything will be
removed or added
Easy to setup and maintain
lchrusciel/ApiTestCase


or


Internal Api Platform ApiTestCase
Simpli
fi
ed tests only
Mostly one API call only


Arrangement => DB
fi
xtures + commands


No business
fl
ow checks
/** @test *
/

public function it_gets_details_about_product_variant(): voi
d

{

$this->loadFixturesFromFile('test_data.yaml')
;

$this->client->request
(

'GET'
,

'/api/v2/shop/product-variants/MUG_BLUE',
 

[],
 

[],
 

self::CONTENT_TYPE_HEADE
R

)
;

$response = $this->client->getResponse()
;

$this->assertResponse($response, 'get_product_variant_response', Response::HTTP_OK)
;

}
/** @test *
/

public function it_gets_details_about_product_variant(): voi
d

{

$this->loadFixturesFromFile('test_data.yaml')
;

$this->client->request
(

'GET'
,

'/api/v2/shop/product-variants/MUG_BLUE',
 

[],
 

[],
 

self::CONTENT_TYPE_HEADE
R

)
;

$response = $this->client->getResponse()
;

$this->assertResponse($response, 'get_product_variant_response', Response::HTTP_OK)
;

}
/** @test *
/

public function it_gets_details_about_product_variant(): voi
d

{

$this->loadFixturesFromFile('test_data.yaml')
;

$this->client->request
(

'GET'
,

'/api/v2/shop/product-variants/MUG_BLUE',
 

[],
 

[],
 

self::CONTENT_TYPE_HEADE
R

)
;

$response = $this->client->getResponse()
;

$this->assertResponse($response, 'get_product_variant_response', Response::HTTP_OK)
;

}
/** @test *
/

public function it_gets_details_about_product_variant(): voi
d

{

$this->loadFixturesFromFile('test_data.yaml')
;

$this->client->request
(

'GET'
,

'/api/v2/shop/product-variants/MUG_BLUE',
 

[],
 

[],
 

self::CONTENT_TYPE_HEADE
R

)
;

$response = $this->client->getResponse()
;

$this->assertResponse($response, 'get_product_variant_response', Response::HTTP_OK)
;

}
/** @test */
public function it_gets_details_about_product_variant(): voi
d

{

$this->loadFixturesFromFile('test_data.yaml')
;

$this->client->request
(

'GET'
,

'/api/v2/shop/product-variants/MUG_BLUE',
 

[],
 

[],
 

self::CONTENT_TYPE_HEADE
R

)
;

$response = $this->client->getResponse()
;

$this->assertResponse($response, 'get_product_variant_response', Response::HTTP_OK)
;

}
{

"@context": "/api/v2/contexts/ProductVariant"
,

"@id": "/api/v2/shop/product-variants/MUG_BLUE"
,

"@type": "ProductVariant"
,

"id": @integer@
,

"onHand": 10
,

"code": "MUG_BLUE"
,

"currentStock": 5
,

"product": "/api/v2/shop/products/MUG"
,

"optionValues":
[

"/api/v2/shop/product-option-values/COLOR_BLUE
"

]
,

"translations":
{

"en_US":
{

"@id": "/api/v2/shop/product-variant-translation/@integer@"
,

"@type": "ProductVariantTranslation"
,

"id": @integer@
,

"name": "Blue Mug"
,

"locale": "en_US
"

}

}
,

"price": 2000
,

"originalPrice": 2000
,

"inStock": tru
e

}
Cons
Developer oriented usage
Summary
What are the pros & cons of
this integration?
https://master.demo.sylius.com/api/v2/docs
@Sylius
Thank you!
@lukaszchrusciel

Contenu connexe

Tendances

Docker introduction (1)
Docker introduction (1)Docker introduction (1)
Docker introduction (1)Gourav Varma
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker IntroductionPeng Xiao
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass SlidesNir Kaufman
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and GraphicsAndreas Jakl
 
React Native for React Developers v.2.0.pdf
React Native for React Developers v.2.0.pdfReact Native for React Developers v.2.0.pdf
React Native for React Developers v.2.0.pdfNikolaGorgiev
 
Project meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture OverviewProject meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture OverviewYu-Hsin Hung
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹Johnny Sung
 
CI/CD 101
CI/CD 101CI/CD 101
CI/CD 101djdule
 
Nest.js Introduction
Nest.js IntroductionNest.js Introduction
Nest.js IntroductionTakuya Tejima
 
DevNetCreate Workshop - build a react app - React crash course
DevNetCreate Workshop - build a react app - React crash courseDevNetCreate Workshop - build a react app - React crash course
DevNetCreate Workshop - build a react app - React crash courseCisco DevNet
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersPlatform9
 
Introduction to Containers and Docker
Introduction to Containers and DockerIntroduction to Containers and Docker
Introduction to Containers and DockerFayçal Bziou
 
Docker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesDocker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesLuciano Fiandesio
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Herofazalraja
 
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...Edureka!
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IICS
 

Tendances (20)

Docker introduction (1)
Docker introduction (1)Docker introduction (1)
Docker introduction (1)
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Nestjs MasterClass Slides
Nestjs MasterClass SlidesNestjs MasterClass Slides
Nestjs MasterClass Slides
 
05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics05 - Qt External Interaction and Graphics
05 - Qt External Interaction and Graphics
 
NestJS
NestJSNestJS
NestJS
 
React Native for React Developers v.2.0.pdf
React Native for React Developers v.2.0.pdfReact Native for React Developers v.2.0.pdf
React Native for React Developers v.2.0.pdf
 
Docker in real life
Docker in real lifeDocker in real life
Docker in real life
 
Project meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture OverviewProject meeting: Android Graphics Architecture Overview
Project meeting: Android Graphics Architecture Overview
 
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹炎炎夏日學 Android 課程 -  Part1: Kotlin 語法介紹
炎炎夏日學 Android 課程 - Part1: Kotlin 語法介紹
 
CI/CD 101
CI/CD 101CI/CD 101
CI/CD 101
 
Nest.js Introduction
Nest.js IntroductionNest.js Introduction
Nest.js Introduction
 
DevNetCreate Workshop - build a react app - React crash course
DevNetCreate Workshop - build a react app - React crash courseDevNetCreate Workshop - build a react app - React crash course
DevNetCreate Workshop - build a react app - React crash course
 
Kubernetes Helm: Why It Matters
Kubernetes Helm: Why It MattersKubernetes Helm: Why It Matters
Kubernetes Helm: Why It Matters
 
Introduction to Containers and Docker
Introduction to Containers and DockerIntroduction to Containers and Docker
Introduction to Containers and Docker
 
Docker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutesDocker 101 - from 0 to Docker in 30 minutes
Docker 101 - from 0 to Docker in 30 minutes
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
 
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
 
DevOps 3 - Docker.pdf
DevOps 3 - Docker.pdfDevOps 3 - Docker.pdf
DevOps 3 - Docker.pdf
 
Best Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part IBest Practices in Qt Quick/QML - Part I
Best Practices in Qt Quick/QML - Part I
 

Similaire à Sylius and Api Platform The story of integration

Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For BeginnersJonathan Wage
 
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Innomatic Platform
 
Protocol-Oriented Programming in Swift
Protocol-Oriented Programming in SwiftProtocol-Oriented Programming in Swift
Protocol-Oriented Programming in SwiftOleksandr Stepanov
 
Working With The Symfony Admin Generator
Working With The Symfony Admin GeneratorWorking With The Symfony Admin Generator
Working With The Symfony Admin GeneratorJohn Cleveley
 
Crafting Quality PHP Applications (Bucharest Tech Week 2017)
Crafting Quality PHP Applications (Bucharest Tech Week 2017)Crafting Quality PHP Applications (Bucharest Tech Week 2017)
Crafting Quality PHP Applications (Bucharest Tech Week 2017)James Titcumb
 
Application Layer in PHP
Application Layer in PHPApplication Layer in PHP
Application Layer in PHPPer Bernhardt
 
How to switch stack without downtime
How to switch stack without downtimeHow to switch stack without downtime
How to switch stack without downtimeFabien Penso
 
DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)Oleg Zinchenko
 
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
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code lessAnton Novikau
 
Dart for Java Developers
Dart for Java DevelopersDart for Java Developers
Dart for Java DevelopersYakov Fain
 
Code Generation in Magento 2
Code Generation in Magento 2Code Generation in Magento 2
Code Generation in Magento 2Sergii Shymko
 
Need for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API ProjectsNeed for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API ProjectsŁukasz Chruściel
 
Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)James Titcumb
 
AEM & eCommerce integration
AEM & eCommerce integrationAEM & eCommerce integration
AEM & eCommerce integrationLokesh BS
 
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...AFAS Software
 
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Roel Hartman
 

Similaire à Sylius and Api Platform The story of integration (20)

Hexagonal architecture
Hexagonal architectureHexagonal architecture
Hexagonal architecture
 
Doctrine For Beginners
Doctrine For BeginnersDoctrine For Beginners
Doctrine For Beginners
 
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
Building Multi-Tenant and SaaS products in PHP - CloudConf 2015
 
Protocol-Oriented Programming in Swift
Protocol-Oriented Programming in SwiftProtocol-Oriented Programming in Swift
Protocol-Oriented Programming in Swift
 
Working With The Symfony Admin Generator
Working With The Symfony Admin GeneratorWorking With The Symfony Admin Generator
Working With The Symfony Admin Generator
 
Event Sourcing with php
Event Sourcing with phpEvent Sourcing with php
Event Sourcing with php
 
Crafting Quality PHP Applications (Bucharest Tech Week 2017)
Crafting Quality PHP Applications (Bucharest Tech Week 2017)Crafting Quality PHP Applications (Bucharest Tech Week 2017)
Crafting Quality PHP Applications (Bucharest Tech Week 2017)
 
Application Layer in PHP
Application Layer in PHPApplication Layer in PHP
Application Layer in PHP
 
How to switch stack without downtime
How to switch stack without downtimeHow to switch stack without downtime
How to switch stack without downtime
 
DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)DDD on example of Symfony (Webcamp Odessa 2014)
DDD on example of Symfony (Webcamp Odessa 2014)
 
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!
 
How to code to code less
How to code to code lessHow to code to code less
How to code to code less
 
Dart for Java Developers
Dart for Java DevelopersDart for Java Developers
Dart for Java Developers
 
Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++Using the Windows 8 Runtime from C++
Using the Windows 8 Runtime from C++
 
Code Generation in Magento 2
Code Generation in Magento 2Code Generation in Magento 2
Code Generation in Magento 2
 
Need for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API ProjectsNeed for Speed: Removing speed bumps in API Projects
Need for Speed: Removing speed bumps in API Projects
 
Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)Crafting Quality PHP Applications (PHP Benelux 2018)
Crafting Quality PHP Applications (PHP Benelux 2018)
 
AEM & eCommerce integration
AEM & eCommerce integrationAEM & eCommerce integration
AEM & eCommerce integration
 
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
Michiel Overeem (AFAS) - Enterprise software schaalbaar maken met Service Fab...
 
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...Developing A Real World Logistic Application With Oracle Application - UKOUG ...
Developing A Real World Logistic Application With Oracle Application - UKOUG ...
 

Plus de Łukasz Chruściel

Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
ConFoo 2024 - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024  - Need for Speed: Removing speed bumps in API ProjectsConFoo 2024  - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024 - Need for Speed: Removing speed bumps in API ProjectsŁukasz Chruściel
 
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solutionConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solutionŁukasz Chruściel
 
SyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdfSyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdfŁukasz Chruściel
 
SymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdfSymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdfŁukasz Chruściel
 
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Łukasz Chruściel
 
4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdf4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdfŁukasz Chruściel
 
4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdfŁukasz Chruściel
 
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaBoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaŁukasz Chruściel
 
What we've learned designing new Sylius API
What we've learned designing new Sylius APIWhat we've learned designing new Sylius API
What we've learned designing new Sylius APIŁukasz Chruściel
 
How to optimize background processes.pdf
How to optimize background processes.pdfHow to optimize background processes.pdf
How to optimize background processes.pdfŁukasz Chruściel
 
SymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdfSymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdfŁukasz Chruściel
 
Symfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsSymfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsŁukasz Chruściel
 
Dutch php a short tale about state machine
Dutch php   a short tale about state machineDutch php   a short tale about state machine
Dutch php a short tale about state machineŁukasz Chruściel
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machineŁukasz Chruściel
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machineŁukasz Chruściel
 
BDD in practice based on an open source project
BDD in practice based on an open source projectBDD in practice based on an open source project
BDD in practice based on an open source projectŁukasz Chruściel
 
Diversified application testing based on a Sylius project
Diversified application testing based on a Sylius projectDiversified application testing based on a Sylius project
Diversified application testing based on a Sylius projectŁukasz Chruściel
 

Plus de Łukasz Chruściel (19)

Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
ConFoo 2024 - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024  - Need for Speed: Removing speed bumps in API ProjectsConFoo 2024  - Need for Speed: Removing speed bumps in API Projects
ConFoo 2024 - Need for Speed: Removing speed bumps in API Projects
 
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solutionConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
ConFoo 2024 - Sylius 2.0, top-notch eCommerce for customizable solution
 
SyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdfSyliusCon - Typical pitfalls of Sylius development.pdf
SyliusCon - Typical pitfalls of Sylius development.pdf
 
SymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdfSymfonyLive Online 2023 - Is SOLID dead? .pdf
SymfonyLive Online 2023 - Is SOLID dead? .pdf
 
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
Worldwide Software Architecture Summit'23 - BDD and why most of us do it wron...
 
4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdf4Developers - Rozterki i decyzje.pdf
4Developers - Rozterki i decyzje.pdf
 
4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf4Developers - Sylius CRUD generation revisited.pdf
4Developers - Sylius CRUD generation revisited.pdf
 
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API SyliusaBoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
BoilingFrogs - Rozterki i decyzje. Czego się nauczyliśmy projektując API Syliusa
 
What we've learned designing new Sylius API
What we've learned designing new Sylius APIWhat we've learned designing new Sylius API
What we've learned designing new Sylius API
 
How to optimize background processes.pdf
How to optimize background processes.pdfHow to optimize background processes.pdf
How to optimize background processes.pdf
 
SymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdfSymfonyCon - Dilemmas and decisions..pdf
SymfonyCon - Dilemmas and decisions..pdf
 
Symfony World - Symfony components and design patterns
Symfony World - Symfony components and design patternsSymfony World - Symfony components and design patterns
Symfony World - Symfony components and design patterns
 
Dutch php a short tale about state machine
Dutch php   a short tale about state machineDutch php   a short tale about state machine
Dutch php a short tale about state machine
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machine
 
A short tale about state machine
A short tale about state machineA short tale about state machine
A short tale about state machine
 
BDD in practice based on an open source project
BDD in practice based on an open source projectBDD in practice based on an open source project
BDD in practice based on an open source project
 
Diversified application testing based on a Sylius project
Diversified application testing based on a Sylius projectDiversified application testing based on a Sylius project
Diversified application testing based on a Sylius project
 
Why do I love and hate php?
Why do I love and hate php?Why do I love and hate php?
Why do I love and hate php?
 

Dernier

Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
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
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
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
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmSujith Sukumaran
 
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
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentationvaddepallysandeep122
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 

Dernier (20)

Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Odoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting ServiceOdoo Development Company in India | Devintelle Consulting Service
Odoo Development Company in India | Devintelle Consulting Service
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
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
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
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
 
Intelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalmIntelligent Home Wi-Fi Solutions | ThinkPalm
Intelligent Home Wi-Fi Solutions | ThinkPalm
 
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
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva2.pdf Ejercicios de programación competitiva
2.pdf Ejercicios de programación competitiva
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
PREDICTING RIVER WATER QUALITY ppt presentation
PREDICTING  RIVER  WATER QUALITY  ppt presentationPREDICTING  RIVER  WATER QUALITY  ppt presentation
PREDICTING RIVER WATER QUALITY ppt presentation
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 

Sylius and Api Platform The story of integration