SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
1
ZENDEXPRESSIVE
höher ­ schneller ­ weiter
CODE
INSIDE
2
RALF EGGERT
Trainer
Berater
Autor
Insulaner
Speaker
Entwickler
ZF1
seit 2006
ZF2
seit 2012
ZF3
seit 2016
GF
Travello
GmbH
www.ralfeggert.de
3
1 PSR-7 / Middleware
2
Middleware für Aktionen3
ZendExpressive Überblick
Middleware für die Pipeline4
Und was ist mit Tee MVC?5
4
1 PSR-7 / Middleware
5
WAS IST
PSR-7?
6
PSR­4
Autoload PSR­2
CodingPSR­1
Coding
PSR­3
Logging
PSR­6
Caching
PSR­7
HTTP
PHP-FIG
www.php­fig.org
PSR­11
???
PSR­14
???
PSR­15
???
7
<?php
namespace PsrHttpMessage;
interface MessageInterface
{
public function getProtocolVersion();
public function withProtocolVersion($version);
public function getHeaders();
public function hasHeader($name);
public function getHeader($name);
public function getHeaderLine($name);
public function withHeader($name, $value);
public function withAddedHeader($name, $value);
public function withoutHeader($name);
public function getBody();
public function withBody(StreamInterface $body);
}
PSR-7
MESSAGEINTERFACE
8
<?php
namespace PsrHttpMessage;
interface RequestInterface
extends MessageInterface {}
interface ServerRequestInterface
extends RequestInterface {}
interface ResponseInterface
extends MessageInterface {}
interface StreamInterface {}
interface UploadedFileInterface {}
interface UriInterface{}
PSR-7
WEITEREINTERFACES
9
WAS IST
MIDDLEWARE?
10
CLIENT WEBSERVER
HTTP
REQUEST
HTTP
RESPONSE
HTTP
11
MIDDLEWARE
HTTP
REQUEST
HTTP
RESPONSE
MIDDLEWARE
12
MIDDLEWARE
PIPELINE
HTTP
REQUEST
HTTP
RESPONSE
MIDDLEWARE 1 MIDDLEWARE 2 MIDDLEWARE 3
13
<?php
interface LambdaMiddlewareInterface
{
/**
* @param RequestInterface $request
* @return ResponseInterface
*/
public function __invoke($request);
}
LAMBDA
MIDDLEWARE
INTERFACE
14
<?php
interface InjectedResponseMiddlewareInterface
{
/**
* @param RequestInterface $request
* @param ResponseInterface $response
* @return ResponseInterface
*/
public function __invoke($request, $response);
}
INJECTEDRESPONSE
MIDDLEWARE
INTERFACE
15
<?php
interface InjectedNextMiddlewareInterface
{
/**
* @param RequestInterface $request
* @param ResponseInterface $response
* @param callable $next
* @return ResponseInterface
*/
public function __invoke(
$request, $response, $next = null
);
}
INJECTEDNEXT
MIDDLEWARE
INTERFACE
used
by ZF3
16
2 ZendExpressive Überblick
17
FRAMEWORK SILOS
18
FRAMEWORK SILOS
19
ZEND
DIACTOROS
ZENDSTRATIGILITY
ZENDEXPRESSIVE
ZF KOMPONENTEN
PSR-7
MIDDLEWARE
MIDDLEWARE
APPLICATIONS
20
ROUTER DI CONTAINER TEMPLATE
RENDERER
ERROR
HANDLER
Aura.Router
FastRoute
ZendRouter
Weitere Router
Aura.DI
Pimple­interop
Zend
ServiceManager
Weitere
DI Container
Plates
Twig
ZendView
Weitere
Template­Engine
Whoops
Weiterer
Error­Handler
ZENDEXPRESSIVE
ZUTATEN
21
PERFORMANCE
MESSDATEN
Gemessen im April 2016 mit der ZendExpressive Skeleton 1.0.1
AD = Aura.DI, AR = Aura.Router, FR = FastRoute, ZR = ZendRouter, ZS = ZendServiceManager, ZV = ZendView
Laufzeit (ms) 31,8 106,5 43,8 31,9 103,8 44,9 42,7 117,2 56,1 35,6 31,3
Router FR FR FR AR AR AR ZR ZR ZR FR FR
DI Container ZS ZS ZS ZS ZS ZS ZS ZS ZS AD Pimple
Renderer Plates Twig ZV Plates Twig ZV Plates Twig ZV Plates Plates
22
PERFORMANCE
ERKENNTNISSE
AD = Aura.DI, AR = Aura.Router, FR = FastRoute, ZR = ZendRouter, ZS = ZendServiceManager, ZV = ZendView
AR FR
ZR
ROUTER
Plates
Twig
ZV
RENDERER
AD Pimple ZS
DI CONTAINER
23
PERFORMANCE
FAZIT
AD = Aura.DI, AR = Aura.Router, FR = FastRoute, ZR = ZendRouter, ZS = ZendServiceManager, ZV = ZendView
FR
SCHNELLSTE
VARIANTE
PlatesPimple
PS: Traue keiner Statistik, die du nicht selber gefälscht hast! ;­)
ZR
REINE ZF
VARIANTE
ZVZS
24
INSTALLATION
$ composer create-project ⏎
zendframework/zend-expressive-skeleton ⏎
/var/www/zend-expressive-skeleton
$ cd /var/www/zend-expressive-skeleton
$ composer serve
25
ZENDEXPRESSIVE
SKELETON
APPLICATION
26
VERZEICHNISSTRUKTUR
 config
 autoload
 data
 cache
 public
 src
 Application
 Action
 templates
 application
 error
 layout
 test
 ApplicationTest
 Action
 vendor
 composer.json
 config
 autoload
 data
 cache
 modules
 Application
 config
 src
 Action
 templates
 application
 error
 layout
 test
 Action
 public
 vendor
 composer.json
MODULAR
EINFACH
27
CONFIGMANAGER
$ composer require mtymek/expressive-config-manager
<?php
// Datei /config/config.php
use ZendExpressiveConfigManagerConfigManager;
use ZendExpressiveConfigManagerPhpFileProvider;
$configManager = new ConfigManager([
ApplicationConfigProvider::class,
new PhpFileProvider(
'config/autoload/{{,*.}global,{,*.}local}.php'
),
]);
return new ArrayObject(
$configManager->getMergedConfig()
);
28
CONFIGPROVIDER
<?php
// Datei /modules/Application/src/ConfigProvider.php
namespace Application;
use ZendConfigFactory;
class ConfigProvider
{
public function __invoke()
{
return Factory::fromFile(
__DIR__ . '/../config/module.config.php'
);
}
}
29
COMPONENT
INSTALLER
$ composer require ⏎
zendframework/zend-component-installer
$ composer require zendframework/zend-db
<?php
// Datei /config/config.php
use ZendExpressiveConfigManagerConfigManager;
use ZendExpressiveConfigManagerPhpFileProvider;
$configManager = new ConfigManager([
ZendDbConfigProvider::class,
ApplicationConfigProvider::class,
new PhpFileProvider(
'config/autoload/{{,*.}global,{,*.}local}.php'
),
]);
return new ArrayObject(
$configManager->getMergedConfig()
);
30
Middleware für Aktionen3
31
AKTIONEN BEISPIELE
32
TEMPLATE
BAUSTEINE AKTION
ROUTING
MIDDLEWARE
KONFIGURATION
33
MIDDLEWARE
namespace PizzaAction;
use ApplicationTemplateTemplateRendererInterface;
use PizzaModelRepositoryPizzaRepositoryInterface;
class ShowIntroAction
{
/* ... */
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next = null
) {
$pizzas = $this->pizzaRepository->getPizzas();
return new HtmlResponse(
$this->renderer->render(
'pizza::intro', ['pizzas' => $pizzas]
)
);
}
}
34
ZENDVIEW
TEMPLATE
<?php foreach ($this->pizzas as $pizza) : ?>
<?php
$urlShow = $this->url(
'pizza-show', ['id' => $pizza['id']]
);
?>
<div class="col-md-4">
<div class="thumbnail text-center">
<a href="<?= $urlShow; ?>">
<img src="<?= $pizza['image'] ?>"
title="<?= $pizza['name'] ?>">
</a>
</div>
</div>
<?php endforeach ?>
35
return [
'routes' => [
[
'name' => 'pizza-intro',
'path' => '/pizza',
'middleware' =>
PizzaActionShowIntroAction::class,
'allowed_methods' => ['GET'],
],
[
'name' => 'pizza-handle-delete',
'path' => '/pizza/delete/:id',
'middleware' =>
PizzaActionDeletePizzaAction::class,
'allowed_methods' => ['POST'],
'options' => [
'constraints' => [
'id' => '[1-9][0-9]*',
],
],
],
],
];
ZENDROUTER
ROUTING
36
namespace PizzaRestAction;
class GetIdAction
{
use PizzaRepositoryAwareTrait;
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next = null
) {
$pizza = $this->pizzaRepository->getSinglePizza(
$request->getAttribute('id')
);
if (!$pizza) {
return new JsonResponse(
['err' => 'Not found']
);
}
return new JsonResponse($pizza);
}
}
RESTAKTION
37
Middleware für die Pipeline4
38
HTTP
REQUEST
HTTP
RESPONSE
ROUTING
MIDDLEWARE
URL HELPER
MIDDLEWARE
DISPATCHING
MIDDLEWARE
ZENDEXPRESSIVE
MW PIPELINE
39
HTTP
REQUEST
HTTP
RESPONSE
LOCALIZATION
MIDDLEWARE
AUTHENTICATION
MIDDLEWARE
AUTHORIZATION
MIDDLEWARE
KOMPLEXERE
MW PIPELINE
40
use ZendExpressiveContainerApplicationFactory;
use ZendExpressiveHelper;
return [
'middleware_pipeline' => [
'always' => [
'middleware' => [
HelperServerUrlMiddleware::class,
],
'priority' => 10000,
],
'routing' => [
'middleware' => [
ApplicationFactory::ROUTING_MIDDLEWARE,
HelperUrlHelperMiddleware::class,
ApplicationFactory::DISPATCH_MIDDLEWARE,
],
'priority' => 1,
],
'error' => [
'middleware' => [],
'error' => true,
'priority' => -10000,
],
],
];
DEFAULT
KONFIGURATION
41
use I18nMiddlewareLocalizationMiddleware;
use UserAuthorizationAuthenticationMiddleware;
use UserAuthorizationAuthorizationMiddleware;
use ZendExpressiveContainerApplicationFactory;
use ZendExpressiveHelper;
return [
'middleware_pipeline' => [
'always' => [ /* ... */ ],
'routing' => [
'middleware' => [
ApplicationFactory::ROUTING_MIDDLEWARE,
HelperUrlHelperMiddleware::class,
LocalizationMiddleware::class,
AuthenticationMiddleware::class,
AuthorizationMiddleware::class,
ApplicationFactory::DISPATCH_MIDDLEWARE,
],
'priority' => 1,
],
'error' => [ /* ... */ ],
],
];
KOMPLEXERE
KONFIGURATION
42
namespace UserAuthorization;
class AuthorizationMiddleware
{
public function __invoke(
ServerRequestInterface $request,
ResponseInterface $response,
callable $next
) {
$permission = $result->getMatchedRouteName();
if (!$this->rbac->isGranted($this->role, $permission)) {
if ($this->role == GuestRole::NAME) {
throw new RuntimeException(
'Nicht angemeldet', 401
);
} else {
throw new RuntimeException('Kein Zugriff', 403);
}
}
return $next($request, $response);
}
}
AUTHORIZATION
MIDDLEWARE
43
AUTHORIZATION
FEHLGESCHLAGEN
44
Und was ist mit Tee MVC?5
45
WARUM
NOCH MVC,
WENN WIR NUN
MIDDLEWARE
HABEN?
MVCMW
Neues
Konzept
Wenige
Module
Middleware
Pipeline
Schwerere
Integration
unerfahrene
Entwickler
Neue
Projekte
Migration
komplexer
sehr
performant
erprobt
& stabil
viele
Module
Migration
einfach
Leichte
Integration
erfahrene
Entwickler
Event
Manager
Bestands­
projekte
weniger
performant
Zukunft Gegenwart
47
TUTORIAL
https://github.com/RalfEggert/zend­expressive­tutorial
48
ACHTUNG! WERBUNG!
www.zendframeworkbuch.de
49
DANKE!
FRAGEN?
50
1
Digging In
von Zach Dischner
Flickr CC BY 2.0 5
Pipes
von Leonid Mamchenkov
Flickr CC BY 2.0
17
Monument valley
von Moyan Brenn
Flickr CC BY 2.0
30
»and... action«
von Latin Snake
Flickr CC BY 2.0
44
Und was ist mit Tee?
aus der Giotto Werbung
YouTube
37
Pipeline
von jasonwoodhead23
Flickr CC BY 2.0
4
A flowery meadow
von Michael Figiel
Flickr CC BY 2.0
BILDNACHWEIS
49
free high res texture 380
von Caleb Kimbrough
Flickr CC BY 2.0

Contenu connexe

Tendances

Symfony2 Service Container: Inject me, my friend
Symfony2 Service Container: Inject me, my friendSymfony2 Service Container: Inject me, my friend
Symfony2 Service Container: Inject me, my friend
Kirill Chebunin
 
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf Conference
 
Zend Framework Study@Tokyo vol1
Zend Framework Study@Tokyo vol1Zend Framework Study@Tokyo vol1
Zend Framework Study@Tokyo vol1
Shinya Ohyanagi
 

Tendances (20)

Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)Diving into HHVM Extensions (PHPNW Conference 2015)
Diving into HHVM Extensions (PHPNW Conference 2015)
 
はじめてのSymfony2
はじめてのSymfony2はじめてのSymfony2
はじめてのSymfony2
 
Zend Framework Study@Tokyo #2
Zend Framework Study@Tokyo #2Zend Framework Study@Tokyo #2
Zend Framework Study@Tokyo #2
 
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
 
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP UK 2017)
 
Symfony2 Service Container: Inject me, my friend
Symfony2 Service Container: Inject me, my friendSymfony2 Service Container: Inject me, my friend
Symfony2 Service Container: Inject me, my friend
 
Php 7 hhvm and co
Php 7 hhvm and coPhp 7 hhvm and co
Php 7 hhvm and co
 
Publishing a Perl6 Module
Publishing a Perl6 ModulePublishing a Perl6 Module
Publishing a Perl6 Module
 
What you need to remember when you upload to CPAN
What you need to remember when you upload to CPANWhat you need to remember when you upload to CPAN
What you need to remember when you upload to CPAN
 
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
ZFConf 2010: Zend Framework & MVC, Model Implementation (Part 2, Dependency I...
 
Continuous Quality Assurance
Continuous Quality AssuranceContinuous Quality Assurance
Continuous Quality Assurance
 
Zend/Expressive 3 – The Next Generation
Zend/Expressive 3 – The Next GenerationZend/Expressive 3 – The Next Generation
Zend/Expressive 3 – The Next Generation
 
Better detection of what modules are used by some Perl 5 code
Better detection of what modules are used by some Perl 5 codeBetter detection of what modules are used by some Perl 5 code
Better detection of what modules are used by some Perl 5 code
 
Zend Framework Study@Tokyo vol1
Zend Framework Study@Tokyo vol1Zend Framework Study@Tokyo vol1
Zend Framework Study@Tokyo vol1
 
On UnQLite
On UnQLiteOn UnQLite
On UnQLite
 
Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014Getting started with TDD - Confoo 2014
Getting started with TDD - Confoo 2014
 
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
 
Learning Dtrace
Learning DtraceLearning Dtrace
Learning Dtrace
 
New in php 7
New in php 7New in php 7
New in php 7
 
Continuous testing In PHP
Continuous testing In PHPContinuous testing In PHP
Continuous testing In PHP
 

En vedette

En vedette (13)

Creating an API with Expressive
Creating an API with ExpressiveCreating an API with Expressive
Creating an API with Expressive
 
IPC 2015 Zend Framework 3 Reloaded
IPC 2015 Zend Framework 3 ReloadedIPC 2015 Zend Framework 3 Reloaded
IPC 2015 Zend Framework 3 Reloaded
 
Love Creating!
Love Creating!Love Creating!
Love Creating!
 
Introduction to git and github
Introduction to git and githubIntroduction to git and github
Introduction to git and github
 
Tunesoflovepreview
TunesoflovepreviewTunesoflovepreview
Tunesoflovepreview
 
AIESEC Nigeria Corporate Portfolio
AIESEC Nigeria Corporate PortfolioAIESEC Nigeria Corporate Portfolio
AIESEC Nigeria Corporate Portfolio
 
Wordcampnigeria
WordcampnigeriaWordcampnigeria
Wordcampnigeria
 
Rest Beer v2
Rest Beer v2Rest Beer v2
Rest Beer v2
 
Apigility – Lightning Fast API Development - OSSCamp 2014
Apigility – Lightning Fast API Development - OSSCamp 2014 Apigility – Lightning Fast API Development - OSSCamp 2014
Apigility – Lightning Fast API Development - OSSCamp 2014
 
REST Level 5 - A Trek To The Summit
REST Level 5 - A Trek To The SummitREST Level 5 - A Trek To The Summit
REST Level 5 - A Trek To The Summit
 
Theory Of Design
Theory Of DesignTheory Of Design
Theory Of Design
 
Level 3 REST Makes Your API Browsable
Level 3 REST Makes Your API BrowsableLevel 3 REST Makes Your API Browsable
Level 3 REST Makes Your API Browsable
 
reveal.js 3.0.0
reveal.js 3.0.0reveal.js 3.0.0
reveal.js 3.0.0
 

Similaire à Zend\Expressive - höher, schneller, weiter

Nko workshop - node js crud & deploy
Nko workshop - node js crud & deployNko workshop - node js crud & deploy
Nko workshop - node js crud & deploy
Simon Su
 
Артем Маркушев - JavaScript
Артем Маркушев - JavaScriptАртем Маркушев - JavaScript
Артем Маркушев - JavaScript
DataArt
 

Similaire à Zend\Expressive - höher, schneller, weiter (20)

R-House (LSRC)
R-House (LSRC)R-House (LSRC)
R-House (LSRC)
 
Zend Expressive 3 e PSR-15
Zend Expressive 3 e PSR-15Zend Expressive 3 e PSR-15
Zend Expressive 3 e PSR-15
 
Zend Framework 2 - Basic Components
Zend Framework 2  - Basic ComponentsZend Framework 2  - Basic Components
Zend Framework 2 - Basic Components
 
dotCloud and go
dotCloud and godotCloud and go
dotCloud and go
 
Php engine
Php enginePhp engine
Php engine
 
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
Kicking off with Zend Expressive and Doctrine ORM (ZendCon 2016)
 
Nko workshop - node js crud & deploy
Nko workshop - node js crud & deployNko workshop - node js crud & deploy
Nko workshop - node js crud & deploy
 
Артем Маркушев - JavaScript
Артем Маркушев - JavaScriptАртем Маркушев - JavaScript
Артем Маркушев - JavaScript
 
Ростислав Михайлив "Zend Framework 3 - evolution or revolution"
Ростислав Михайлив "Zend Framework 3 - evolution or revolution"Ростислав Михайлив "Zend Framework 3 - evolution or revolution"
Ростислав Михайлив "Zend Framework 3 - evolution or revolution"
 
ZF2 for the ZF1 Developer
ZF2 for the ZF1 DeveloperZF2 for the ZF1 Developer
ZF2 for the ZF1 Developer
 
Hack Proof Your Drupal Site
Hack Proof Your Drupal SiteHack Proof Your Drupal Site
Hack Proof Your Drupal Site
 
Drehbuch zum Talk "Rapid Prototyping mit PHP Frameworks"
Drehbuch zum Talk "Rapid Prototyping mit PHP Frameworks"Drehbuch zum Talk "Rapid Prototyping mit PHP Frameworks"
Drehbuch zum Talk "Rapid Prototyping mit PHP Frameworks"
 
Z-Ray: A customizable development tool belt (Zendcon 2016)
Z-Ray: A customizable development tool belt (Zendcon 2016)Z-Ray: A customizable development tool belt (Zendcon 2016)
Z-Ray: A customizable development tool belt (Zendcon 2016)
 
Debugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 VersionDebugging: Rules And Tools - PHPTek 11 Version
Debugging: Rules And Tools - PHPTek 11 Version
 
Debugging: Rules & Tools
Debugging: Rules & ToolsDebugging: Rules & Tools
Debugging: Rules & Tools
 
関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい関西PHP勉強会 php5.4つまみぐい
関西PHP勉強会 php5.4つまみぐい
 
Laravel5 Introduction and essentials
Laravel5 Introduction and essentialsLaravel5 Introduction and essentials
Laravel5 Introduction and essentials
 
Boosting Developer Productivity with Clang
Boosting Developer Productivity with ClangBoosting Developer Productivity with Clang
Boosting Developer Productivity with Clang
 
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
Kicking off with Zend Expressive and Doctrine ORM (PHP Srbija 2017)
 
My name is Trinidad
My name is TrinidadMy name is Trinidad
My name is Trinidad
 

Plus de Ralf Eggert

Plus de Ralf Eggert (20)

ChatGPT: unser täglich' Bot gib uns heute
ChatGPT: unser täglich' Bot gib uns heuteChatGPT: unser täglich' Bot gib uns heute
ChatGPT: unser täglich' Bot gib uns heute
 
Der ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 EditionDer ultimative PHP Framework Vergleich 2023 Edition
Der ultimative PHP Framework Vergleich 2023 Edition
 
PHP Module als Rundum-Sorglos-Pakete entwickeln
PHP Module als Rundum-Sorglos-Pakete entwickelnPHP Module als Rundum-Sorglos-Pakete entwickeln
PHP Module als Rundum-Sorglos-Pakete entwickeln
 
Alexa, what's next?
Alexa, what's next?Alexa, what's next?
Alexa, what's next?
 
Alexa, wohin geht die Reise
Alexa, wohin geht die ReiseAlexa, wohin geht die Reise
Alexa, wohin geht die Reise
 
8. Hamburg Voice Interface Meetup
8. Hamburg Voice Interface Meetup8. Hamburg Voice Interface Meetup
8. Hamburg Voice Interface Meetup
 
Welcome Bixby
Welcome BixbyWelcome Bixby
Welcome Bixby
 
Alexa Skill Maintenance
Alexa Skill MaintenanceAlexa Skill Maintenance
Alexa Skill Maintenance
 
Vom Zend Framework zu Laminas
Vom Zend Framework zu LaminasVom Zend Framework zu Laminas
Vom Zend Framework zu Laminas
 
Alexa Skills und PHP? Passt das zusammen?
Alexa Skills und PHP? Passt das zusammen?Alexa Skills und PHP? Passt das zusammen?
Alexa Skills und PHP? Passt das zusammen?
 
Mit Jovo von 0 auf 100
Mit Jovo von 0 auf 100Mit Jovo von 0 auf 100
Mit Jovo von 0 auf 100
 
Vom Zend Framework zu Laminas
Vom Zend Framework zu LaminasVom Zend Framework zu Laminas
Vom Zend Framework zu Laminas
 
Alexa for Hospitality
Alexa for HospitalityAlexa for Hospitality
Alexa for Hospitality
 
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
Alexa, lass uns Geld verdienen – fünf Geschäftsmodelle, die wirklich funktion...
 
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche SprachanwendungenFortgeschrittene Techniken für erfolgreiche Sprachanwendungen
Fortgeschrittene Techniken für erfolgreiche Sprachanwendungen
 
Die sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice ProjekteDie sieben Projektphasen für Voice Projekte
Die sieben Projektphasen für Voice Projekte
 
Künstliche Intelligenz – Traum und Wirklichkeit
Künstliche Intelligenz – Traum und WirklichkeitKünstliche Intelligenz – Traum und Wirklichkeit
Künstliche Intelligenz – Traum und Wirklichkeit
 
Multi-Modal Voice Development with Amazon Alexa
Multi-Modal Voice Development with Amazon AlexaMulti-Modal Voice Development with Amazon Alexa
Multi-Modal Voice Development with Amazon Alexa
 
Mein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein BackendMein Haus, mein Auto, mein Backend
Mein Haus, mein Auto, mein Backend
 
Sieben Tipps für den Voice Commerce mit PHP
Sieben Tipps für den Voice Commerce mit PHPSieben Tipps für den Voice Commerce mit PHP
Sieben Tipps für den Voice Commerce mit PHP
 

Dernier

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
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Dernier (20)

2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.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
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 

Zend\Expressive - höher, schneller, weiter