SlideShare ist ein Scribd-Unternehmen logo
1 von 57
Downloaden Sie, um offline zu lesen
CC BY-SA, James Hammond
https://www.flickr.com/photos/jameshammond/8732132809
Bringing TYPO3 Legacy
Applications into the Flow
Martin Helmich
m.helmich@mittwald.de @martin-helmich
Inspiring Conference 2015, Kolbermoor
March 28th, 2015
Martin Helmich
Software Architect at Mittwald
@martin-helmich
@mittwald
CC BY-SA, Wolfgang Wagner
https://www.flickr.com/photos/wolfgang-wagner/16958684785
Legacy
Applications
CC BY-SA, Photones
http://commons.wikimedia.org/wiki/File:Heureka_(Plastik).jpg
CC BY-SA, Gerwin Sturm
https://www.flickr.com/photos/scarygami/5518831238
CC BY, Dude of Lego
https://www.flickr.com/photos/dudeoflego/5105352800
Option #1
Rewrite
From Scratch
CC BY-SA, D464-Darren Hall
http://commons.wikimedia.org/wiki/File:Demolition_in_Ballymun_-_Flickr_-_D464-Darren_Hall.jpg
Option #2
Migrate
Existing Code
CC BY-SA, Wolfe House & Building Movers
http://en.wikipedia.org/wiki/File:Hydrolic_dollies_relocate_house_in_Newark,_Delaware.jpg
TYPO3
FLOW
TYPO3
NEOS
?
TYPO3
CMS
TYPO3
FLOW
TYPO3
NEOS
?
TYPO3
CMS
TYPO3
Extbase
Extbase
pibase
3rd party
Frameworks
TYPO3
FLOW
TYPO3
CMS
Extbase
pibase
3rd party
Frameworks
TYPO3
FLOW
TYPO3
CMS
Extbase
pibase
3rd party
Frameworks
TYPO3
FLOW
TYPO3
CMS
Extbase
pibase
3rd party
Frameworks
TYPO3
FLOW
TYPO3
CMS
When
NOT
to migrate
from CMS
to Flow
Public Domain (both)
http://pixabay.com/de/roter-apfel-apple-lecker-di%C3%A4t-83085/ and http://commons.wikimedia.org/wiki/File:Citrus_reticulata.jpg
namespace	
  MyExtDomainModel;	
  
use	
  TYPO3FlowAnnotations	
  as	
  Flow;	
  
use	
  DoctrineORMMapping	
  as	
  ORM;	
  
/**	
  
	
  *	
  @FlowEntity	
  
	
  */	
  
class	
  Car	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @FlowValidate('NotEmpty')	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Manufacturer	
  
	
  	
  	
  *	
  @ORMManyToOne	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
class	
  Tx_MyExt_Domain_Model_Car	
  extends	
  	
  
	
  	
  Tx_Extbase_DomainObject_AbstractEntity	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @validate	
  notempty	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Tx_MyExt_Domain_Model_Manufacturer	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
TYPO3 CMS
(Extbase)
TYPO3 Flow
namespace	
  MyExtDomainModel;	
  
use	
  TYPO3FlowAnnotations	
  as	
  Flow;	
  
use	
  DoctrineORMMapping	
  as	
  ORM;	
  
/**	
  
	
  *	
  @FlowEntity	
  
	
  */	
  
class	
  Car	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @FlowValidate('NotEmpty')	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Manufacturer	
  
	
  	
  	
  *	
  @ORMManyToOne	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
class	
  Tx_MyExt_Domain_Model_Car	
  extends	
  	
  
	
  	
  Tx_Extbase_DomainObject_AbstractEntity	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @validate	
  notempty	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Tx_MyExt_Domain_Model_Manufacturer	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
TYPO3 CMS
(Extbase)
TYPO3 Flow
namespace	
  MyExtDomainModel;	
  
use	
  TYPO3FlowAnnotations	
  as	
  Flow;	
  
use	
  DoctrineORMMapping	
  as	
  ORM;	
  
/**	
  
	
  *	
  @FlowEntity	
  
	
  */	
  
class	
  Car	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @FlowValidate('NotEmpty')	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Manufacturer	
  
	
  	
  	
  *	
  @ORMManyToOne	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
class	
  Tx_MyExt_Domain_Model_Car	
  extends	
  	
  
	
  	
  Tx_Extbase_DomainObject_AbstractEntity	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @validate	
  notempty	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Tx_MyExt_Domain_Model_Manufacturer	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
TYPO3 CMS
(Extbase)
TYPO3 Flow
namespace	
  MyExtDomainModel;	
  
use	
  TYPO3FlowAnnotations	
  as	
  Flow;	
  
use	
  DoctrineORMMapping	
  as	
  ORM;	
  
/**	
  
	
  *	
  @FlowEntity	
  
	
  */	
  
class	
  Car	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @FlowValidate('NotEmpty')	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Manufacturer	
  
	
  	
  	
  *	
  @ORMManyToOne	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
class	
  Tx_MyExt_Domain_Model_Car	
  extends	
  	
  
	
  	
  Tx_Extbase_DomainObject_AbstractEntity	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @validate	
  notempty	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Tx_MyExt_Domain_Model_Manufacturer	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
TYPO3 CMS
(Extbase)
TYPO3 Flow
TYPO3 CMS
Manual
Migration
TYPO3 Flow
TYPO3 CMS
Manual
Migration
TYPO3 Flow
Largely
unusable
TYPO3 CMS TYPO3 Flow
Double
maintenance
TYPO3 CMS TYPO3 Flow
TYPO3 CMS TYPO3 Flow
Dependencies
between packages
CC BY, Mirko-Tobias Schäfer
https://www.flickr.com/photos/gastev/2174504149
Automation
https://github.com/
mittwald/flow-metamorph
composer require mittwald-typo3/flow-metamorph
composer require mittwald-typo3/flow-metamorph-pibase
Installation
<?php	
  
class	
  FooTastic	
  {	
  
	
  	
  public	
  function	
  
hello($who)	
  {	
  
	
  	
  	
  	
  echo	
  "Hello	
  
$who!";	
  
	
  	
  }	
  
}	
  
hello.php
Input
Source
File
<?php	
  
class	
  FooTastic	
  {	
  
	
  	
  public	
  function	
  
hello($who)	
  {	
  
	
  	
  	
  	
  echo	
  "Hello	
  
$who!";	
  
	
  	
  }	
  
}	
  
hello.php
Input
Source
File
Parser
<?php	
  
class	
  FooTastic	
  {	
  
	
  	
  public	
  function	
  
hello($who)	
  {	
  
	
  	
  	
  	
  echo	
  "Hello	
  
$who!";	
  
	
  	
  }	
  
}	
  
hello.php
Input
Source
File
Parser
Abstract
Syntax
Tree
class	
  Tx_MyExt_Domain_Model_Car	
  extends	
  	
  
	
  	
  Tx_Extbase_DomainObject_AbstractEntity	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @validate	
  notempty	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Tx_MyExt_Domain_Model_Manufacturer	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
Source Code
class	
  Tx_MyExt_Domain_Model_Car	
  extends	
  	
  
	
  	
  Tx_Extbase_DomainObject_AbstractEntity	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @validate	
  notempty	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Tx_MyExt_Domain_Model_Manufacturer	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
class
name=Tx_..._Car
abstract=false
final=false
extends
name=Tx_..._AbstractEntity
stmts
property
name=licenseNumber
docComment="/**n..."
property
name=manufacturer
docComment="/**n..."
Source Code Syntax Tree
<?php	
  
class	
  FooTastic	
  {	
  
	
  	
  public	
  function	
  
hello($who)	
  {	
  
	
  	
  	
  	
  echo	
  "Hello	
  
$who!";	
  
	
  	
  }	
  
}	
  
hello.php
Input
Source
File
Parser
Abstract
Syntax
Tree
<?php	
  
class	
  FooTastic	
  {	
  
	
  	
  public	
  function	
  
hello($who)	
  {	
  
	
  	
  	
  	
  echo	
  "Hello	
  
$who!";	
  
	
  	
  }	
  
}	
  
hello.php
Input
Source
File
Parser
Transformation
Rules
Trans-
former
Abstract
Syntax
Tree
<?php	
  
class	
  FooTastic	
  {	
  
	
  	
  public	
  function	
  
hello($who)	
  {	
  
	
  	
  	
  	
  echo	
  "Hello	
  
$who!";	
  
	
  	
  }	
  
}	
  
hello.php
Input
Source
File
Parser
Transformation
Rules
Trans-
former
Printer
<?php	
  
namespace	
  Foo;	
  
class	
  FooTastic	
  {	
  
	
  	
  /**	
  @FlowInject	
  */	
  
	
  	
  protected	
  $greeter;	
  
	
  	
  public	
  function	
  
hello($who)	
  {	
  
	
  	
  	
  	
  $this-­‐>greeter-­‐
>greet($who);	
  
	
  	
  }
hello_improved.php
output
Source
File(s)
Abstract
Syntax
Tree
<?php	
  
class	
  FooTastic	
  {	
  
	
  	
  public	
  function	
  
hello($who)	
  {	
  
	
  	
  	
  	
  echo	
  "Hello	
  
$who!";	
  
	
  	
  }	
  
}	
  
hello.php
Input
Source
File
Parser
class	
  FooTastic:	
  
	
  	
  def	
  hello(who):	
  
	
  	
  	
  	
  print	
  "Hello	
  %s"	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  %	
  who	
  
hello.py
Transformation
Rules
Trans-
former
Printer
<?php	
  
namespace	
  Foo;	
  
class	
  FooTastic	
  {	
  
	
  	
  /**	
  @FlowInject	
  */	
  
	
  	
  protected	
  $greeter;	
  
	
  	
  public	
  function	
  
hello($who)	
  {	
  
	
  	
  	
  	
  $this-­‐>greeter-­‐
>greet($who);	
  
	
  	
  }
hello_improved.php
output
Source
File(s)
Abstract
Syntax
Tree
namespace	
  MyExtDomainModel;	
  
use	
  TYPO3FlowAnnotations	
  as	
  Flow;	
  
use	
  DoctrineORMMapping	
  as	
  ORM;	
  
/**	
  
	
  *	
  @FlowEntity	
  
	
  */	
  
class	
  Car	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @FlowValidate('NotEmpty')	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Manufacturer	
  
	
  	
  	
  *	
  @ORMManyToOne	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
class	
  Tx_MyExt_Domain_Model_Car	
  extends	
  	
  
	
  	
  Tx_Extbase_DomainObject_AbstractEntity	
  {	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  string	
  
	
  	
  	
  *	
  @validate	
  notempty	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $licenseNumber;	
  
	
  	
  /**	
  
	
  	
  	
  *	
  @var	
  Tx_MyExt_Domain_Model_Manufacturer	
  
	
  	
  	
  */	
  
	
  	
  protected	
  $manufacturer;	
  
}
TYPO3 CMS
(Extbase)
TYPO3 Flow
namespace
name=MwMyExtDomainModel
uses
use
name=Mw...AbstractVehicle
alias=AbstractVehicle
stmts
class
name=Car
abstract=false
final=false
extends
name=AbstractVehicle
stmts
BEFORE
AFTER
„Rename
Tx_MyExt_Domain_Model_Car
to
MwMyExtDomainModelCar“
class
name=Tx_..._Car
abstract=false
final=false
extends
name=Tx_..._AbstractVehicle
stmts
property
name=licenseNumber
docComment="/**n..."
property
name=manufacturer
docComment="/**n..."
TYPO3 CMS TYPO3 Flow
Compatibility
Automated
Migration
TYPO3 CMS
Old Code, but
Feature Complete
TYPO3 Flow
Compatibility
Automated
Migration
TYPO3 Flow
Compatibility
TYPO3 CMS
Rewrite
iteratively
TYPO3 Flow
Compatibility
TYPO3 CMS
Rewrite
iteratively New
features
Compatibility
TYPO3 CMS
Rewrite
iteratively
Decomission the
old Application
TYPO3 Flow
TYPO3 Flow
Compatibility
TYPO3 CMS
Rewrite
iteratively
Migrate
continuouslyContinue to maintain
old Application
Automated
Code Transformation
Merge
Manual
correction
Open Problems
Proof of correctness
„How do I know that the
auto-generated code is
correct?“
Open Problems
Ease of Extensibility
„I want to migrate from Zend
to Flow, but writing new
transformation rules is just too
complex!“
Open Problems
Efficiency
„Wouldn’t it be easier to just
migrate all my code by hand?“
CC BY-SA, Max Mustermann
http://mustermann.de
http://slideshare.net/mhelmich/migrating-from-typo3-
cms-to-typo3-flow
https://speakerdeck.com/kdambekalns/migrating-
from-typo3-cms-to-typo3-neos
Resources
Thank you
This work is licensed under a Creative Commons Attribution-
ShareAlike 4.0 International License.
m.helmich@mittwald.de
@martin-helmich
https://github.com/martin-helmich
https://github.com/mittwald/flow-metamorph

Weitere ähnliche Inhalte

Was ist angesagt?

Simon Laws – Apache Flink Cluster Deployment on Docker and Docker-Compose
Simon Laws – Apache Flink Cluster Deployment on Docker and Docker-ComposeSimon Laws – Apache Flink Cluster Deployment on Docker and Docker-Compose
Simon Laws – Apache Flink Cluster Deployment on Docker and Docker-Compose
Flink Forward
 
Getting Started with (Distributed) Version Control
Getting Started with (Distributed) Version ControlGetting Started with (Distributed) Version Control
Getting Started with (Distributed) Version Control
John Paulett
 
Symfony2: Get your project started
Symfony2: Get your project startedSymfony2: Get your project started
Symfony2: Get your project started
Ryan Weaver
 

Was ist angesagt? (20)

Simon Laws – Apache Flink Cluster Deployment on Docker and Docker-Compose
Simon Laws – Apache Flink Cluster Deployment on Docker and Docker-ComposeSimon Laws – Apache Flink Cluster Deployment on Docker and Docker-Compose
Simon Laws – Apache Flink Cluster Deployment on Docker and Docker-Compose
 
Apache Solr for TYPO3 Components & Review 2016
Apache Solr for TYPO3 Components & Review 2016Apache Solr for TYPO3 Components & Review 2016
Apache Solr for TYPO3 Components & Review 2016
 
Dependency Management with Composer
Dependency Management with ComposerDependency Management with Composer
Dependency Management with Composer
 
Getting Started with (Distributed) Version Control
Getting Started with (Distributed) Version ControlGetting Started with (Distributed) Version Control
Getting Started with (Distributed) Version Control
 
Symfony2 3rd-Party Bundles
Symfony2 3rd-Party BundlesSymfony2 3rd-Party Bundles
Symfony2 3rd-Party Bundles
 
10 less-known Laravel Packages: May 2016
10 less-known Laravel Packages: May 201610 less-known Laravel Packages: May 2016
10 less-known Laravel Packages: May 2016
 
Symfony2: Get your project started
Symfony2: Get your project startedSymfony2: Get your project started
Symfony2: Get your project started
 
The new features of PHP 7
The new features of PHP 7The new features of PHP 7
The new features of PHP 7
 
Migrating from drupal to plone with transmogrifier
Migrating from drupal to plone with transmogrifierMigrating from drupal to plone with transmogrifier
Migrating from drupal to plone with transmogrifier
 
Hands-on with the Symfony2 Framework
Hands-on with the Symfony2 FrameworkHands-on with the Symfony2 Framework
Hands-on with the Symfony2 Framework
 
Intro to pl/PHP Oscon2007
Intro to pl/PHP Oscon2007Intro to pl/PHP Oscon2007
Intro to pl/PHP Oscon2007
 
TYPO3 Scheduler
TYPO3 SchedulerTYPO3 Scheduler
TYPO3 Scheduler
 
WP-CLI: Unleash the power
WP-CLI: Unleash the powerWP-CLI: Unleash the power
WP-CLI: Unleash the power
 
GateKeeper - bypass or not bypass?
GateKeeper - bypass or not bypass?GateKeeper - bypass or not bypass?
GateKeeper - bypass or not bypass?
 
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
Shift Remote: Mobile - Devops-ify your life with Github Actions - Nicola Cort...
 
Versions
VersionsVersions
Versions
 
Terraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntTerraform 0.12 + Terragrunt
Terraform 0.12 + Terragrunt
 
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)The Bash Dashboard (Or: How to Use Bash for Data Analysis)
The Bash Dashboard (Or: How to Use Bash for Data Analysis)
 
Understanding and building Your Own Docker
Understanding and building Your Own DockerUnderstanding and building Your Own Docker
Understanding and building Your Own Docker
 
Do zero ao deploy
Do zero ao deployDo zero ao deploy
Do zero ao deploy
 

Ähnlich wie InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow

Speed up your developments with Symfony2
Speed up your developments with Symfony2Speed up your developments with Symfony2
Speed up your developments with Symfony2
Hugo Hamon
 
course slides -- powerpoint
course slides -- powerpointcourse slides -- powerpoint
course slides -- powerpoint
webhostingguy
 

Ähnlich wie InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow (20)

Speed up your developments with Symfony2
Speed up your developments with Symfony2Speed up your developments with Symfony2
Speed up your developments with Symfony2
 
7 Tips on Getting Your Theme Approved the First Time
7 Tips on Getting Your Theme Approved the First Time7 Tips on Getting Your Theme Approved the First Time
7 Tips on Getting Your Theme Approved the First Time
 
Fluent Development with FLOW3 1.0
Fluent Development with FLOW3 1.0Fluent Development with FLOW3 1.0
Fluent Development with FLOW3 1.0
 
Fluent Development with FLOW3 1.0
Fluent Development with FLOW3 1.0Fluent Development with FLOW3 1.0
Fluent Development with FLOW3 1.0
 
FLOW3 Tutorial - T3CON11 Frankfurt
FLOW3 Tutorial - T3CON11 FrankfurtFLOW3 Tutorial - T3CON11 Frankfurt
FLOW3 Tutorial - T3CON11 Frankfurt
 
IPCSE12: Hands on FLOW3
IPCSE12: Hands on FLOW3IPCSE12: Hands on FLOW3
IPCSE12: Hands on FLOW3
 
Living With Legacy Code
Living With Legacy CodeLiving With Legacy Code
Living With Legacy Code
 
Getting Into FLOW3 (DPC12)
Getting Into FLOW3 (DPC12)Getting Into FLOW3 (DPC12)
Getting Into FLOW3 (DPC12)
 
TYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase frameworkTYPO3 Extension development using new Extbase framework
TYPO3 Extension development using new Extbase framework
 
Demystifying Maven
Demystifying MavenDemystifying Maven
Demystifying Maven
 
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry PiGrâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
Grâce aux tags Varnish, j'ai switché ma prod sur Raspberry Pi
 
IPCSE12: Getting into FLOW3
IPCSE12: Getting into FLOW3IPCSE12: Getting into FLOW3
IPCSE12: Getting into FLOW3
 
Build powerfull and smart web applications with Symfony2
Build powerfull and smart web applications with Symfony2Build powerfull and smart web applications with Symfony2
Build powerfull and smart web applications with Symfony2
 
Jump into Squeak - Integrate Squeak projects with Docker & Github
Jump into Squeak - Integrate Squeak projects with Docker & GithubJump into Squeak - Integrate Squeak projects with Docker & Github
Jump into Squeak - Integrate Squeak projects with Docker & Github
 
H2O 3 REST API Overview
H2O 3 REST API OverviewH2O 3 REST API Overview
H2O 3 REST API Overview
 
H2O 3 REST API Overview
H2O 3 REST API OverviewH2O 3 REST API Overview
H2O 3 REST API Overview
 
Exploring Async PHP (SF Live Berlin 2019)
Exploring Async PHP (SF Live Berlin 2019)Exploring Async PHP (SF Live Berlin 2019)
Exploring Async PHP (SF Live Berlin 2019)
 
course slides -- powerpoint
course slides -- powerpointcourse slides -- powerpoint
course slides -- powerpoint
 
PyCon Canada 2015 - Is your python application secure
PyCon Canada 2015 - Is your python application securePyCon Canada 2015 - Is your python application secure
PyCon Canada 2015 - Is your python application secure
 
The Beauty And The Beast Php N W09
The Beauty And The Beast Php N W09The Beauty And The Beast Php N W09
The Beauty And The Beast Php N W09
 

Kürzlich hochgeladen

CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Medical / Health Care (+971588192166) Mifepristone and Misoprostol tablets 200mg
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
masabamasaba
 

Kürzlich hochgeladen (20)

%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT  - Elevating Productivity in Today's Agile EnvironmentHarnessing ChatGPT  - Elevating Productivity in Today's Agile Environment
Harnessing ChatGPT - Elevating Productivity in Today's Agile Environment
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park %in ivory park+277-882-255-28 abortion pills for sale in ivory park
%in ivory park+277-882-255-28 abortion pills for sale in ivory park
 
%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare%in Harare+277-882-255-28 abortion pills for sale in Harare
%in Harare+277-882-255-28 abortion pills for sale in Harare
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
Abortion Pill Prices Tembisa [(+27832195400*)] 🏥 Women's Abortion Clinic in T...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
WSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go PlatformlessWSO2CON2024 - It's time to go Platformless
WSO2CON2024 - It's time to go Platformless
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 

InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow