SlideShare una empresa de Scribd logo
1 de 129
Descargar para leer sin conexión
PEGGY • SENIOR DEVELOPER • ATLASSIAN • @PYKO
Mock servers
Fake all the things!
CREATING MOCK SERVERS
WHY USE MOCK SERVERS?
TESTING WITH MOCKS
THINGS TO LOOK OUT FOR
Agenda
THE PROBLEM
The problem
Simple servers that provide dummy data to
mock or simulate external dependencies.
“
”
Why use mock servers?
• Big cool statistic
• 2,56
9
• Add-Ons in Marketplace
Isolation
Self-contained
Decoupled
Stable
• Big cool statistic
• 2,56
9
• Add-Ons in Marketplace
Faster dev loop
127.0.0.1
• Big cool statistic
• 2,56
9
• Add-Ons in Marketplace
Better testing
Full control
Edge cases
E2E tests
Creating mock servers
3rd party libraries
vs
Build your own
WireMock
MockServer
and more…
Build your own
36 lines of code
// Assume all requests are successful
app.post('/rest/billing/1/product/*',
function(req, res) {
res.type('application/json');
res.status(202).send();
});
// Assume all requests are successful
app.post('/rest/billing/1/product/*',
function(req, res) {
res.type('application/json');
res.status(202).send();
});
// Assume all requests are successful
app.post('/rest/billing/1/product/*',
function(req, res) {
res.type('application/json');
res.status(202).send();
});
// Mock out the APIs.
// Directory path reflects the REST path.
app.all('/rest/billing/1/*', function(req, res) {
var method = req.method.toLowerCase();
var path = req.path.replace('/rest/billing/1/', '') + 

'-' + method + '.json';
res.send(require('./' + path));
});
// Mock out the APIs.
// Directory path reflects the REST path.
app.all('/rest/billing/1/*', function(req, res) {
var method = req.method.toLowerCase();
var path = req.path.replace('/rest/billing/1/', '') + 

'-' + method + '.json';
res.send(require('./' + path));
});
// Mock out the APIs.
// Directory path reflects the REST path.
app.all('/rest/billing/1/*', function(req, res) {
var method = req.method.toLowerCase();
var path = req.path.replace('/rest/billing/1/', '') + 

'-' + method + '.json';
res.send(require('./' + path));
});
GET /rest/billing/1/instance/pricing
GET /rest/billing/1/instance/pricing
// Mock out the APIs.
// Directory path reflects the REST path.
app.all('/rest/billing/1/*', function(req, res) {
var method = req.method.toLowerCase();
var path = req.path.replace('/rest/billing/1/', '') + 

'-' + method + '.json';
res.send(require('./' + path));
});
get /rest/billing/1/instance/pricing
// Mock out the APIs.
// Directory path reflects the REST path.
app.all('/rest/billing/1/*', function(req, res) {
var method = req.method.toLowerCase();
var path = req.path.replace('/rest/billing/1/', '') + 

'-' + method + '.json';
res.send(require('./' + path));
});
path = 'instance/pricing-get.json'get instance/pricing
// Mock out the APIs.
// Directory path reflects the REST path.
app.all('/rest/billing/1/*', function(req, res) {
var method = req.method.toLowerCase();
var path = req.path.replace('/rest/billing/1/', '') + 

'-' + method + '.json';
res.send(require('./' + path));
});
// Mock out the APIs.
// Directory path reflects the REST path.
app.all('/rest/billing/1/*', function(req, res) {
var method = req.method.toLowerCase();
var path = req.path.replace('/rest/billing/1/', '') + 

'-' + method + '.json';
res.send(require('./' + path));
});
require('./instance/pricing-get.json');
instance
pricing-get.json
product-usage-get.json
prospective-prices-post.json
require('./instance/pricing-get.json');
{
"hostname": "stubbed-host-response",
"active": true,
"currentBillingPeriod": {
"startDate": "2014-05-18",
"endDate": "2014-06-18",
"renewalFrequency": "monthly"
},
…
./instance/pricing-get.json
{
"hostname": "stubbed-host-response",
"active": true,
"currentBillingPeriod": {
"startDate": "2014-05-18",
"endDate": "2014-06-18",
"renewalFrequency": "monthly"
},
…
GET /rest/billing/1/instance/pricing
instance
pricing-get.json
product-usage-get.json
prospective-prices-post.json
instance
pricing-get.json
product-usage-get.json
prospective-prices-post.json
instance
pricing-get.json
product-usage-get.json
prospective-prices-post.json
POST data
instance
pricing-get.json
product-usage-get.json
prospective-prices-post.json
prospective-prices-postData.json
// Mock out the APIs.
// Directory path reflects the REST path.
app.all('/rest/billing/1/*', function(req, res) {
var method = req.method.toLowerCase();
var path = req.path.replace('/rest/billing/1/', '') + 

'-' + method + '.json';
res.send(require('./' + path));
});
app.post('/rest/billing/1/*', function (req, res) {
validatePostData(req);
res.send(getJsonFileForRequest(req, 'post'));
});
app.get('/rest/billing/1/*', function (req, res) {
res.send(getJsonFileForRequest(req, 'get'));
});
app.post('/rest/billing/1/*', function (req, res) {
validatePostData(req);
res.send(getJsonFileForRequest(req, 'post'));
});
app.get('/rest/billing/1/*', function (req, res) {
res.send(getJsonFileForRequest(req, 'get'));
});
app.post('/rest/billing/1/*', function (req, res) {
validatePostData(req);
res.send(getJsonFileForRequest(req, 'post'));
});
app.get('/rest/billing/1/*', function (req, res) {
res.send(getJsonFileForRequest(req, 'get'));
});
scenarios
states
all-the-products
annual-cc-noError
annual-cc-paymentError
monthly-cc-expiredCC
monthly-cc-productActivating
monthly-one-product-in-eval
…
app.get('/state/:state', function (req, res) {
app.state = req.params.state;
res.redirect('/billing/overview');
});
app.get('/state/:state', function (req, res) {
app.state = req.params.state;
res.redirect('/billing/overview');
});
GET /state/all-the-products
app.get('/state/:state', function (req, res) {
app.state = req.params.state;
res.redirect(‘/admin/billing/overview');
});
app.state = 'all-the-products'
function getJsonFilePath(path, suffix, ignoreState) {
var basePath = '/' + path.replace('/rest/billing/1/', '');
var filePath;
if (app.state && !ignoreState) {
basePath = '/states/' + app.state + basePath;
}
filePath = __dirname + basePath + '-' + suffix + '.json';
return filePath;
}
app.state = 'all-the-products'
function getJsonFilePath(path, suffix, ignoreState) {
var basePath = '/' + path.replace('/rest/billing/1/', '');
var filePath;
if (app.state && !ignoreState) {
basePath = '/states/' + app.state + basePath;
}
filePath = __dirname + basePath + '-' + suffix + '.json';
return filePath;
}
app.state = 'all-the-products'
states
all-the-products
annual-cc-noError
annual-cc-paymentError
monthly-cc-expiredCC
monthly-cc-productActivating
monthly-one-product-in-eval
…
GET /state/all-the-products
GET /state/jira-activating
GET /state/cc-paymentError
442 lines of code
GET /instance/{uuid}/pricing
"headers": {
"uuid": scenarioUuid
}
GET /instance/jira-activating/pricing
"headers": {
"uuid": "jira-activating"
}
smarter JSON
{
"interactions": [
{
"request": {...},
"response": {...}
},
{
"request": {...},
"response": {...}
}
]
}
{
"interactions": [
{
"request": {...},
"response": {...}
},
{
"request": {...},
"response": {...}
}
]
}
{
"interactions": [
{
"request": {...},
"response": {...}
},
{
"request": {...},
"response": {...}
}
]
}
{
"request": {
"method": "POST",
"contentType": "application/json",
"body": {
"products": ["jira.ondemand"]
}
},
"response": {
"status": 200,
"body": {
"productKeys":
["jira-core.ondemand",
"jira-software.ondemand"
"jira-servicedesk.ondemand"]
}
}
},
{
"interactions": [
{
"request": {...},
"response": {...}
},
{
"request": {...},
"response": {...}
}
]
}
{
"request": {
"method": "POST",
"contentType": "application/json",
"body": {
"products": ["jira.ondemand"]
}
},
"response": {
"status": 200,
"body": {
"productKeys":
["jira-core.ondemand",
"jira-software.ondemand"
"jira-servicedesk.ondemand"]
}
}
},
{
"interactions": [
{
"request": {...},
"response": {...}
},
{
"request": {...},
"response": {...}
}
]
}
{
"request": {
"method": "POST",
"contentType": "application/json",
"body": {
"products": ["jira.ondemand"]
}
},
"response": {
"status": 200,
"body": {
"productKeys":
["jira-core.ondemand",
"jira-software.ondemand",
"jira-servicedesk.ondemand"]
}
}
},
{
"interactions": [
{
"request": {...},
"response": {...}
},
{
"request": {...},
"response": {...}
}
]
}
{
"interactions": [
{
"request": {...},
"response": {...}
},
{
"request": {...},
"response": {...}
}
]
}
{
"request": {
"method": "POST",
"contentType": "application/json",
"body": {
"products": ["jira-software.ondemand"]
}
},
"response": {
"status": 200,
"body": {
"productKeys": ["jira-software.ondemand"]
}
}
}
{
"interactions": [
{
"request": {...},
"response": {...}
},
{
"request": {...},
"response": {...}
}
]
}
{
"request": {
"method": "POST",
"contentType": "application/json",
"body": {
"products": ["jira-software.ondemand"]
}
},
"response": {
"status": 200,
"body": {
"productKeys": ["jira-software.ondemand"]
}
}
}
{
"interactions": [
{
"request": {...},
"response": {...}
},
{
"request": {...},
"response": {...}
}
]
}
{
"request": {
"method": "POST",
"contentType": "application/json",
"body": {
"products": ["jira-software.ondemand"]
}
},
"response": {
"status": 200,
"body": {
"productKeys": ["jira-software.ondemand"]
}
}
}
• Big cool statistic
• 2,56
9
• Add-Ons in Marketplace
Testing with mocks
• Big cool statistic
• 2,56
9
• Add-Ons in Marketplace
• Big cool statistic
• 2,56
9
• Add-Ons in Marketplace
page = world.openBillingOverviewPage();
expect(page.getTotalAmount()).toBe('$20');
instance
pricing-get.json
product-usage-get.json
prospective-prices-post.json
world.changeStateTo('all-the-products');
all-the-products
pricing-get.json
product-usage-get.json
prospective-prices-post.json
states
page = world.openBillingOverviewPage();
expect(page.getTotalAmount()).toBe('$750');
Things to look out for
JD Hancock
Mocks need to be
up to date and accurate!
JSON schema
http://json-schema.org
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"required": [
"hostname",
"currentBillingPeriod", "nextBillingPeriod",
"activeProducts", "deactivatedProducts"
],
"properties": {
"hostname": {
"type": "string"
},
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"required": [
"hostname",
"currentBillingPeriod", "nextBillingPeriod",
"activeProducts", "deactivatedProducts"
],
"properties": {
"hostname": {
"type": "string"
},
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"required": [
"hostname",
"currentBillingPeriod", "nextBillingPeriod",
"activeProducts", "deactivatedProducts"
],
"properties": {
"hostname": {
"type": "string"
},
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"required": [
"hostname",
"currentBillingPeriod", "nextBillingPeriod",
"activeProducts", "deactivatedProducts"
],
"properties": {
"hostname": {
"type": "string"
},
"properties": {
"hostname": {
"type": "string"
},
"currentBillingPeriod": {
"$ref": "#/definitions/billingPeriod"
},
"nextBillingPeriod": {
"$ref": "#/definitions/billingPeriod"
},
"activeProducts": {
"type": "array",
"properties": {
"hostname": {
"type": "string"
},
"currentBillingPeriod": {
"$ref": "#/definitions/billingPeriod"
},
"nextBillingPeriod": {
"$ref": "#/definitions/billingPeriod"
},
"activeProducts": {
"type": "array",
"activeProducts": {
"type": "array",
"items": {
"$ref": "#/definitions/product"
}
},
"deactivatedProducts": {
"type": "array",
"items": {
"$ref": "#/definitions/product"
}
}
"activeProducts": {
"type": "array",
"items": {
"$ref": "#/definitions/product"
}
},
"deactivatedProducts": {
"type": "array",
"items": {
"$ref": "#/definitions/product"
}
}
"activeProducts": {
"type": "array",
"items": {
"$ref": "#/definitions/product"
}
},
"deactivatedProducts": {
"type": "array",
"items": {
"$ref": "#/definitions/product"
}
}
},
"definitions": {
"billingPeriod": {
"type": "object",
"required": [
"renewalFrequency", "startDate", "endDate"
],
"properties": {
"renewalFrequency": {
"type": "string"
},
"startDate": {
},
"definitions": {
"billingPeriod": {
"type": "object",
"required": [
"renewalFrequency", "startDate", "endDate"
],
"properties": {
"renewalFrequency": {
"type": "string"
},
"startDate": {
},
"definitions": {
"billingPeriod": {
"type": "object",
"required": [
"renewalFrequency", "startDate", "endDate"
],
"properties": {
"renewalFrequency": {
"type": "string"
},
"startDate": {
},
"definitions": {
"billingPeriod": {
"type": "object",
"required": [
"renewalFrequency", "startDate", "endDate"
],
"properties": {
"renewalFrequency": {
"type": "string"
},
"startDate": {
Schema definition
mock server real server
Schema definition
mock server real server
Schema definition
mock server real server
Schema definition
• Big cool statistic
• 2,56
9
• Add-Ons in Marketplace
Isolation
• Big cool statistic
• 2,56
9
• Add-Ons in Marketplace
Faster dev loop
• Big cool statistic
• 2,56
9
• Add-Ons in Marketplace
Better testing
Thank you!
PEGGY • SENIOR DEVELOPER • ATLASSIAN • @PYKO

Más contenido relacionado

La actualidad más candente

Introduction to Akka - Atlanta Java Users Group
Introduction to Akka - Atlanta Java Users GroupIntroduction to Akka - Atlanta Java Users Group
Introduction to Akka - Atlanta Java Users GroupRoy Russo
 
Swagger APIs for Humans and Robots (Gluecon)
Swagger APIs for Humans and Robots (Gluecon)Swagger APIs for Humans and Robots (Gluecon)
Swagger APIs for Humans and Robots (Gluecon)Tony Tam
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignLaunchAny
 
Developing Faster with Swagger
Developing Faster with SwaggerDeveloping Faster with Swagger
Developing Faster with SwaggerTony Tam
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbieDaeMyung Kang
 
API 101 - Understanding APIs
API 101 - Understanding APIsAPI 101 - Understanding APIs
API 101 - Understanding APIs3scale
 
GraphQL IN Golang
GraphQL IN GolangGraphQL IN Golang
GraphQL IN GolangBo-Yi Wu
 
Just-In-Time Compiler in PHP 8
Just-In-Time Compiler in PHP 8Just-In-Time Compiler in PHP 8
Just-In-Time Compiler in PHP 8Nikita Popov
 
Quartz to Implement Scheduling Service
Quartz to Implement Scheduling ServiceQuartz to Implement Scheduling Service
Quartz to Implement Scheduling ServiceAkila Senevirathne
 
REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUDPrem Sanil
 
SpringBoot 3 Observability
SpringBoot 3 ObservabilitySpringBoot 3 Observability
SpringBoot 3 ObservabilityKnoldus Inc.
 
JShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJavaDayUA
 
Api gateway
Api gatewayApi gateway
Api gatewayenyert
 
Rest & RESTful WebServices
Rest & RESTful WebServicesRest & RESTful WebServices
Rest & RESTful WebServicesPrateek Tandon
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則増田 亨
 
Best Practices for couchDB developers on Microsoft Azure
Best Practices for couchDB developers on Microsoft AzureBest Practices for couchDB developers on Microsoft Azure
Best Practices for couchDB developers on Microsoft AzureBrian Benz
 

La actualidad más candente (20)

Introduction to Akka - Atlanta Java Users Group
Introduction to Akka - Atlanta Java Users GroupIntroduction to Akka - Atlanta Java Users Group
Introduction to Akka - Atlanta Java Users Group
 
Swagger APIs for Humans and Robots (Gluecon)
Swagger APIs for Humans and Robots (Gluecon)Swagger APIs for Humans and Robots (Gluecon)
Swagger APIs for Humans and Robots (Gluecon)
 
Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven Design
 
Developing Faster with Swagger
Developing Faster with SwaggerDeveloping Faster with Swagger
Developing Faster with Swagger
 
webservice scaling for newbie
webservice scaling for newbiewebservice scaling for newbie
webservice scaling for newbie
 
API 101 - Understanding APIs
API 101 - Understanding APIsAPI 101 - Understanding APIs
API 101 - Understanding APIs
 
Swagger
SwaggerSwagger
Swagger
 
GraphQL IN Golang
GraphQL IN GolangGraphQL IN Golang
GraphQL IN Golang
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
What is Swagger?
What is Swagger?What is Swagger?
What is Swagger?
 
Just-In-Time Compiler in PHP 8
Just-In-Time Compiler in PHP 8Just-In-Time Compiler in PHP 8
Just-In-Time Compiler in PHP 8
 
Quartz to Implement Scheduling Service
Quartz to Implement Scheduling ServiceQuartz to Implement Scheduling Service
Quartz to Implement Scheduling Service
 
REST API and CRUD
REST API and CRUDREST API and CRUD
REST API and CRUD
 
SpringBoot 3 Observability
SpringBoot 3 ObservabilitySpringBoot 3 Observability
SpringBoot 3 Observability
 
JShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java PlatformJShell: An Interactive Shell for the Java Platform
JShell: An Interactive Shell for the Java Platform
 
Api gateway
Api gatewayApi gateway
Api gateway
 
Rest & RESTful WebServices
Rest & RESTful WebServicesRest & RESTful WebServices
Rest & RESTful WebServices
 
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則現場で役立つシステム設計の原則
現場で役立つシステム設計の原則
 
Best Practices for couchDB developers on Microsoft Azure
Best Practices for couchDB developers on Microsoft AzureBest Practices for couchDB developers on Microsoft Azure
Best Practices for couchDB developers on Microsoft Azure
 
Rest in flask
Rest in flaskRest in flask
Rest in flask
 

Destacado

Continuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket PipelinesContinuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket PipelinesAtlassian
 
Releasing the Monolith On a Daily Basis
Releasing the Monolith On a Daily BasisReleasing the Monolith On a Daily Basis
Releasing the Monolith On a Daily BasisAtlassian
 
Scaling Your First 1000 Containers with Docker
Scaling Your First 1000 Containers with DockerScaling Your First 1000 Containers with Docker
Scaling Your First 1000 Containers with DockerAtlassian
 
Bitbucket Pipelines: Serverless CI/CD That Will Save Your Life
Bitbucket Pipelines: Serverless CI/CD That Will Save Your LifeBitbucket Pipelines: Serverless CI/CD That Will Save Your Life
Bitbucket Pipelines: Serverless CI/CD That Will Save Your LifeAtlassian
 
Tracking Huge Files with Git LFS
Tracking Huge Files with Git LFSTracking Huge Files with Git LFS
Tracking Huge Files with Git LFSAtlassian
 
Verifying Microservice Integrations with Contract Testing
Verifying Microservice Integrations with Contract TestingVerifying Microservice Integrations with Contract Testing
Verifying Microservice Integrations with Contract TestingAtlassian
 
Popular Git Workflows You Haven't Heard About
Popular Git Workflows You Haven't Heard AboutPopular Git Workflows You Haven't Heard About
Popular Git Workflows You Haven't Heard AboutAtlassian
 
Takeaways From Migrating to Git and Bitbucket Server
Takeaways From Migrating to Git and Bitbucket ServerTakeaways From Migrating to Git and Bitbucket Server
Takeaways From Migrating to Git and Bitbucket ServerAtlassian
 
Scaling Without Expanding: a DevOps Story
Scaling Without Expanding: a DevOps StoryScaling Without Expanding: a DevOps Story
Scaling Without Expanding: a DevOps StoryAtlassian
 
Code reviews vs Pull requests
Code reviews vs Pull requestsCode reviews vs Pull requests
Code reviews vs Pull requestsTim Pettersen
 
Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Junyoung Lee
 
The Secret Sauce of Successful Teams
The Secret Sauce of Successful TeamsThe Secret Sauce of Successful Teams
The Secret Sauce of Successful TeamsAtlassian
 
Give the Power Back: Unleashing Creativity, Drive, and Innovation
Give the Power Back: Unleashing Creativity, Drive, and InnovationGive the Power Back: Unleashing Creativity, Drive, and Innovation
Give the Power Back: Unleashing Creativity, Drive, and InnovationAtlassian
 
Fast then Faster - a Retrospective on Retrospectives
Fast then Faster - a Retrospective on RetrospectivesFast then Faster - a Retrospective on Retrospectives
Fast then Faster - a Retrospective on RetrospectivesAtlassian
 
DevTools at Netflix: Culture, Speed & Innovation
DevTools at Netflix: Culture, Speed & InnovationDevTools at Netflix: Culture, Speed & Innovation
DevTools at Netflix: Culture, Speed & InnovationAtlassian
 
Mechanisms of Delight: HipChat Bots for the Masses
Mechanisms of Delight: HipChat Bots for the MassesMechanisms of Delight: HipChat Bots for the Masses
Mechanisms of Delight: HipChat Bots for the MassesAtlassian
 
'Xero-ing in' on Global Collaboration During Hyper-Growth
'Xero-ing in' on Global Collaboration During Hyper-Growth'Xero-ing in' on Global Collaboration During Hyper-Growth
'Xero-ing in' on Global Collaboration During Hyper-GrowthAtlassian
 
Diversity Matters: How to Be the Change you Seek
Diversity Matters: How to Be the Change you SeekDiversity Matters: How to Be the Change you Seek
Diversity Matters: How to Be the Change you SeekAtlassian
 
Marketing: Your Unexpected DevOps Allies
Marketing: Your Unexpected DevOps AlliesMarketing: Your Unexpected DevOps Allies
Marketing: Your Unexpected DevOps AlliesAtlassian
 
Practiced Curiosity: Building Collaboration Between Development and Design
Practiced Curiosity: Building Collaboration Between Development and DesignPracticed Curiosity: Building Collaboration Between Development and Design
Practiced Curiosity: Building Collaboration Between Development and DesignAtlassian
 

Destacado (20)

Continuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket PipelinesContinuous Delivery in the Cloud with Bitbucket Pipelines
Continuous Delivery in the Cloud with Bitbucket Pipelines
 
Releasing the Monolith On a Daily Basis
Releasing the Monolith On a Daily BasisReleasing the Monolith On a Daily Basis
Releasing the Monolith On a Daily Basis
 
Scaling Your First 1000 Containers with Docker
Scaling Your First 1000 Containers with DockerScaling Your First 1000 Containers with Docker
Scaling Your First 1000 Containers with Docker
 
Bitbucket Pipelines: Serverless CI/CD That Will Save Your Life
Bitbucket Pipelines: Serverless CI/CD That Will Save Your LifeBitbucket Pipelines: Serverless CI/CD That Will Save Your Life
Bitbucket Pipelines: Serverless CI/CD That Will Save Your Life
 
Tracking Huge Files with Git LFS
Tracking Huge Files with Git LFSTracking Huge Files with Git LFS
Tracking Huge Files with Git LFS
 
Verifying Microservice Integrations with Contract Testing
Verifying Microservice Integrations with Contract TestingVerifying Microservice Integrations with Contract Testing
Verifying Microservice Integrations with Contract Testing
 
Popular Git Workflows You Haven't Heard About
Popular Git Workflows You Haven't Heard AboutPopular Git Workflows You Haven't Heard About
Popular Git Workflows You Haven't Heard About
 
Takeaways From Migrating to Git and Bitbucket Server
Takeaways From Migrating to Git and Bitbucket ServerTakeaways From Migrating to Git and Bitbucket Server
Takeaways From Migrating to Git and Bitbucket Server
 
Scaling Without Expanding: a DevOps Story
Scaling Without Expanding: a DevOps StoryScaling Without Expanding: a DevOps Story
Scaling Without Expanding: a DevOps Story
 
Code reviews vs Pull requests
Code reviews vs Pull requestsCode reviews vs Pull requests
Code reviews vs Pull requests
 
Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)Git 더하기 GitHub(구름IDE 환경)
Git 더하기 GitHub(구름IDE 환경)
 
The Secret Sauce of Successful Teams
The Secret Sauce of Successful TeamsThe Secret Sauce of Successful Teams
The Secret Sauce of Successful Teams
 
Give the Power Back: Unleashing Creativity, Drive, and Innovation
Give the Power Back: Unleashing Creativity, Drive, and InnovationGive the Power Back: Unleashing Creativity, Drive, and Innovation
Give the Power Back: Unleashing Creativity, Drive, and Innovation
 
Fast then Faster - a Retrospective on Retrospectives
Fast then Faster - a Retrospective on RetrospectivesFast then Faster - a Retrospective on Retrospectives
Fast then Faster - a Retrospective on Retrospectives
 
DevTools at Netflix: Culture, Speed & Innovation
DevTools at Netflix: Culture, Speed & InnovationDevTools at Netflix: Culture, Speed & Innovation
DevTools at Netflix: Culture, Speed & Innovation
 
Mechanisms of Delight: HipChat Bots for the Masses
Mechanisms of Delight: HipChat Bots for the MassesMechanisms of Delight: HipChat Bots for the Masses
Mechanisms of Delight: HipChat Bots for the Masses
 
'Xero-ing in' on Global Collaboration During Hyper-Growth
'Xero-ing in' on Global Collaboration During Hyper-Growth'Xero-ing in' on Global Collaboration During Hyper-Growth
'Xero-ing in' on Global Collaboration During Hyper-Growth
 
Diversity Matters: How to Be the Change you Seek
Diversity Matters: How to Be the Change you SeekDiversity Matters: How to Be the Change you Seek
Diversity Matters: How to Be the Change you Seek
 
Marketing: Your Unexpected DevOps Allies
Marketing: Your Unexpected DevOps AlliesMarketing: Your Unexpected DevOps Allies
Marketing: Your Unexpected DevOps Allies
 
Practiced Curiosity: Building Collaboration Between Development and Design
Practiced Curiosity: Building Collaboration Between Development and DesignPracticed Curiosity: Building Collaboration Between Development and Design
Practiced Curiosity: Building Collaboration Between Development and Design
 

Similar a Mock Servers - Fake All the Things!

Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryRemedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
 
Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Michelangelo van Dam
 
Building Web Apps with Express
Building Web Apps with ExpressBuilding Web Apps with Express
Building Web Apps with ExpressAaron Stannard
 
Mashing up JavaScript – Advanced Techniques for modern Web Apps
Mashing up JavaScript – Advanced Techniques for modern Web AppsMashing up JavaScript – Advanced Techniques for modern Web Apps
Mashing up JavaScript – Advanced Techniques for modern Web AppsBastian Hofmann
 
Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Michelangelo van Dam
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Michelangelo van Dam
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSam Brannen
 
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
 
Do you want a SDK with that API? (Nordic APIS April 2014)
Do you want a SDK with that API? (Nordic APIS April 2014)Do you want a SDK with that API? (Nordic APIS April 2014)
Do you want a SDK with that API? (Nordic APIS April 2014)Nordic APIs
 
Why You Should Use TAPIs
Why You Should Use TAPIsWhy You Should Use TAPIs
Why You Should Use TAPIsJeffrey Kemp
 
API Days Paris - Automatic Testing of (RESTful) API Documentation
API Days Paris - Automatic Testing of (RESTful) API DocumentationAPI Days Paris - Automatic Testing of (RESTful) API Documentation
API Days Paris - Automatic Testing of (RESTful) API DocumentationRouven Weßling
 
nodejs_at_a_glance.ppt
nodejs_at_a_glance.pptnodejs_at_a_glance.ppt
nodejs_at_a_glance.pptWalaSidhom1
 

Similar a Mock Servers - Fake All the Things! (20)

Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQueryRemedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
Remedie: Building a desktop app with HTTP::Engine, SQLite and jQuery
 
Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8
 
Building Web Apps with Express
Building Web Apps with ExpressBuilding Web Apps with Express
Building Web Apps with Express
 
Mashing up JavaScript – Advanced Techniques for modern Web Apps
Mashing up JavaScript – Advanced Techniques for modern Web AppsMashing up JavaScript – Advanced Techniques for modern Web Apps
Mashing up JavaScript – Advanced Techniques for modern Web Apps
 
Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012Quality Assurance for PHP projects - ZendCon 2012
Quality Assurance for PHP projects - ZendCon 2012
 
Silex Cheat Sheet
Silex Cheat SheetSilex Cheat Sheet
Silex Cheat Sheet
 
Silex Cheat Sheet
Silex Cheat SheetSilex Cheat Sheet
Silex Cheat Sheet
 
REST API for your WP7 App
REST API for your WP7 AppREST API for your WP7 App
REST API for your WP7 App
 
Mashing up JavaScript
Mashing up JavaScriptMashing up JavaScript
Mashing up JavaScript
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
API gateway setup
API gateway setupAPI gateway setup
API gateway setup
 
Advanced redux
Advanced reduxAdvanced redux
Advanced redux
 
Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12Workshop quality assurance for php projects tek12
Workshop quality assurance for php projects tek12
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. REST
 
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
 
Do you want a SDK with that API? (Nordic APIS April 2014)
Do you want a SDK with that API? (Nordic APIS April 2014)Do you want a SDK with that API? (Nordic APIS April 2014)
Do you want a SDK with that API? (Nordic APIS April 2014)
 
Express JS
Express JSExpress JS
Express JS
 
Why You Should Use TAPIs
Why You Should Use TAPIsWhy You Should Use TAPIs
Why You Should Use TAPIs
 
API Days Paris - Automatic Testing of (RESTful) API Documentation
API Days Paris - Automatic Testing of (RESTful) API DocumentationAPI Days Paris - Automatic Testing of (RESTful) API Documentation
API Days Paris - Automatic Testing of (RESTful) API Documentation
 
nodejs_at_a_glance.ppt
nodejs_at_a_glance.pptnodejs_at_a_glance.ppt
nodejs_at_a_glance.ppt
 

Más de Atlassian

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020Atlassian
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020Atlassian
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App ShowcaseAtlassian
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UIAtlassian
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge RuntimeAtlassian
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceAtlassian
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge TriggersAtlassian
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeAtlassian
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelAtlassian
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemAtlassian
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the HoodAtlassian
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAtlassian
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginAtlassian
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingAtlassian
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterAtlassian
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindAtlassian
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Atlassian
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsAtlassian
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamAtlassian
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in MindAtlassian
 

Más de Atlassian (20)

International Women's Day 2020
International Women's Day 2020International Women's Day 2020
International Women's Day 2020
 
10 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 202010 emerging trends that will unbreak your workplace in 2020
10 emerging trends that will unbreak your workplace in 2020
 
Forge App Showcase
Forge App ShowcaseForge App Showcase
Forge App Showcase
 
Let's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UILet's Build an Editor Macro with Forge UI
Let's Build an Editor Macro with Forge UI
 
Meet the Forge Runtime
Meet the Forge RuntimeMeet the Forge Runtime
Meet the Forge Runtime
 
Forge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User ExperienceForge UI: A New Way to Customize the Atlassian User Experience
Forge UI: A New Way to Customize the Atlassian User Experience
 
Take Action with Forge Triggers
Take Action with Forge TriggersTake Action with Forge Triggers
Take Action with Forge Triggers
 
Observability and Troubleshooting in Forge
Observability and Troubleshooting in ForgeObservability and Troubleshooting in Forge
Observability and Troubleshooting in Forge
 
Trusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy ModelTrusted by Default: The Forge Security & Privacy Model
Trusted by Default: The Forge Security & Privacy Model
 
Designing Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI SystemDesigning Forge UI: A Story of Designing an App UI System
Designing Forge UI: A Story of Designing an App UI System
 
Forge: Under the Hood
Forge: Under the HoodForge: Under the Hood
Forge: Under the Hood
 
Access to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIsAccess to User Activities - Activity Platform APIs
Access to User Activities - Activity Platform APIs
 
Design Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch PluginDesign Your Next App with the Atlassian Vendor Sketch Plugin
Design Your Next App with the Atlassian Vendor Sketch Plugin
 
Tear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the BuildingTear Up Your Roadmap and Get Out of the Building
Tear Up Your Roadmap and Get Out of the Building
 
Nailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that MatterNailing Measurement: a Framework for Measuring Metrics that Matter
Nailing Measurement: a Framework for Measuring Metrics that Matter
 
Building Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in MindBuilding Apps With Color Blind Users in Mind
Building Apps With Color Blind Users in Mind
 
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
Creating Inclusive Experiences: Balancing Personality and Accessibility in UX...
 
Beyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced TeamsBeyond Diversity: A Guide to Building Balanced Teams
Beyond Diversity: A Guide to Building Balanced Teams
 
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed TeamThe Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
The Road(map) to Las Vegas - The Story of an Emerging Self-Managed Team
 
Building Apps With Enterprise in Mind
Building Apps With Enterprise in MindBuilding Apps With Enterprise in Mind
Building Apps With Enterprise in Mind
 

Último

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...gurkirankumar98700
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 

Último (20)

How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
Kalyanpur ) Call Girls in Lucknow Finest Escorts Service 🍸 8923113531 🎰 Avail...
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 

Mock Servers - Fake All the Things!