SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
ElePHPants on speed	

RunningTYPO3 Flow on HipHopVM	

Inspiring Conference, March 28th 2014
Martin Helmich, Mittwald CM Service	

m.helmich@mittwald.de
Photo: George Lamson, CC BY-NC-SA	

http://www.flickr.com/photos/lamsongf/6415913075/
YOUR SPEAKER
Martin Helmich
Software architect at Mittwald
TYPO3 addicted since 2004	

Caffeine addicted since 2007
Sebastian Bergmann, CC BY-SA	

http://www.flickr.com/photos/sebastian_bergmann/2337231691/
Lexing
Parsing
Compilation
Execution
PHP execution,	

traditional
<?php	
!
$locations = [	
0 => "Kolbermoor",	
1 => "Espelkamp",	
2 => "Las Vegas"	
];	
!
$currentLoc = 0;	
$currentLocName = $locations[$currentLoc];	
!
if ($currentLoc === 2) {	
$greeting = "%s, baby!";	
} else {	
$greeting = "Hello %s!";	
}	
!
echo sprintf($greeting, $currentLocName) . "n";
Lexing
Parsing
Compilat
Executio
T_OPEN_TAG
T_VARIABLE
T_LNUMBER
T_DOUBLE_	

ARROW
T_CONSTANT_ENCAPSED_STRING
T_IF
T_ELSE
T_ECHO
T_STRING
Lexing
Parsing
Compilat
Executio
<?php	
!
$locations = [	
0 => "Kolbermoor",	
1 => "Espelkamp",	
2 => "Las Vegas"	
];	
!
$currentLoc = 0;	
$currentLocName = $locations[$currentLoc];	
!
if ($currentLoc === 2) {	
$greeting = "%s, baby!";	
} else {	
$greeting = "Hello %s!";	
}	
!
echo sprintf($greeting, $currentLocName) . "n";
Lexing
Parsing
Compilat
Executio
Variable	

assignment
Array	

constructor
Array	

accessor
Constant
Conditional	

statement
Boolean	

expression
Function	

call
Print	

statement
<?php	
!
$locations = [	
0 => "Kolbermoor",	
1 => "Espelkamp",	
2 => "Las Vegas"	
];	
!
$currentLoc = 0;	
$currentLocName = $locations[$currentLoc];	
!
if ($currentLoc === 2) {	
$greeting = "%s, baby!";	
} else {	
$greeting = "Hello %s!";	
}	
!
echo sprintf($greeting, $currentLocName) . "n";
Lexing
Parsing
Compilat
Executio
compiled vars: !0 = $locations, !1 = $currentLocationId, !2 = $currentLocationName,	
!3 = $greetingTemplate	
line # * op fetch ext return operands	
----------------------------------------------------------------	
4 0 > EXT_STMT 	
1 INIT_ARRAY ~0 'Kolbermoor', 0	
5 2 ADD_ARRAY_ELEMENT ~0 'Espelkamp', 1	
7 3 ADD_ARRAY_ELEMENT ~0 'Las+Vegas', 2	
4 ASSIGN !0, ~0	
9 5 EXT_STMT 	
6 ASSIGN !1, 0	
10 7 EXT_STMT 	
8 FETCH_DIM_R $3 !0, !1	
9 ASSIGN !2, $3	
12 10 EXT_STMT 	
11 IS_IDENTICAL ~5 !1, 2	
12 > JMPZ ~5, ->16	
13 13 > EXT_STMT 	
14 ASSIGN !3, '%25s%2C+baby%21'	
14 15 > JMP ->18	
15 16 > EXT_STMT 	
17 ASSIGN !3, 'Hello+%25s%21'	
18 18 > EXT_STMT 	
19 EXT_FCALL_BEGIN 	
20 SEND_VAR !3	
21 SEND_VAR !2	
22 DO_FCALL 2 $8 'sprintf'	
23 EXT_FCALL_END 	
24 CONCAT ~9 $8, '%0A'	
25 ECHO ~9	
19 26 > RETURN 1	
!
Lexing
Parsing
Compilat
Executio
Lexing
Parsing
Compilation
Execution
PHP execution,	

traditional
Lexing
Parsing
Compilation
Execution
Opcode	

Cache
PHP	

opcodes
PHP execution,	

opcode cache
opcodes executed	

by PHP interpreter
Lexing
Parsing
Compilation
Execution
HipHop	

bytecode
JIT	

compiler
HipHop	

intermediate	

representation
Code	

repository
x86-64/arm	

machine code
PHP execution,	

HipHopVM
executed as	

native machine code
AST
https://www.facebook.com/notes/facebook-engineering/the-hiphop-virtual-machine/10150415177928920	

http://www.hhvm.com/blog/2027/faster-and-cheaper-the-evolution-of-the-hhvm-jit
$whatAmI = "Dynamic typization is great!";	
!
if ($whatAmI > 0) {	
$whatAmI = [	
"But in many PHP programs,",	
"this is not excessively used."	
];	
} else {	
$whatAmI = FALSE;	
}
<?php	
!
$locations = [	
0 => "Kolbermoor",	
1 => "Espelkamp",	
2 => "Las Vegas"	
];	
!
$currentLoc = 0;	
$currentLocName = $locations[$currentLoc];	
!
if ($currentLoc === 2) {	
$greeting = "%s, baby!";	
} else {	
$greeting = "Hello %s!";	
}	
!
echo sprintf($greeting, $currentLocName) . "n";
Array of	

strings
Integer
String
How to install
wget -O - http://dl.hhvm.com/conf/hhvm.gpg.key | apt-key add -	
echo deb http://dl.hhvm.com/debian wheezy main | tee /etc/apt/sources.list.d/hhvm.list	
sudo apt-get update	
sudo apt-get install hhvm
https://github.com/facebook/hhvm/wiki/Prebuilt-Packages-on-Debian-7
RunningTYPO3 Flow	

on HHVM
One does not simply	

runTYPO3 Flow on
HHVM.
Flore Allemandou, CC BY-NC-SA	

http://www.flickr.com/photos/flore_frmoz/5031037626/
TYPO3.Flow/Classes/.../Core/Bootstrap.php ---|+++++++
TYPO3.Flow/Classes/.../Error/ErrorHandler.php -|+
TYPO3.Flow/Classes/.../Http/Headers.php |+++++
TYPO3.Flow/Classes/.../Mvc/Routing/ObjectPathMappingRepository.php -----|++++
TYPO3.Flow/Classes/.../Object/Configuration/ConfigurationArgument.php --|++++++++
TYPO3.Flow/Classes/.../Object/Configuration/ConfigurationProperty.php --|++++++++
TYPO3.Flow/Classes/.../Package/Package.php -|+
TYPO3.Flow/Classes/.../Security/AccountRepository.php -----|++++
TYPO3.Flow/Classes/.../Security/Policy/Role.php -|+++++
TYPO3.Flow/Classes/.../Security/Policy/RoleRepository.php -----|+++++++
TYPO3.Flow/Classes/.../Utility/Unicode/TextIterator.php -|+++++
TYPO3.Party/Classes/TYPO3/Party/Domain/Repository/PartyRepository.php -|+++
doctrine/dbal/lib/.../Driver/PDOConnection.php |+++++++++++++++++++++++++++++++++++++++
doctrine/dbal/lib/.../Driver/PDOStatement.php -|+++++++++++++++++++++++++++++++++++++++
Web/index.php |++ 	
TYPO3.Media/Classes/.../Domain/Model/Image.php -|++++ 	
TYPO3.Media/Classes/.../Domain/Model/ImageVariant.php -|++++ 	
TYPO3.Setup/Classes/.../Core/BasicRequirements.php -| 	
TYPO3.Setup/Classes/.../Core/RequestHandler.php |+++ 	
TYPO3.TYPO3CR/Classes/.../Migration/Command/NodeCommandController.php -|+++++	
imagine/imagine/lib/.../Filter/Basic/Resize.php --|++ 	
imagine/imagine/lib/.../Filter/Basic/Thumbnail.php --|++
Doctrine issue #372 (https://github.com/doctrine/dbal/pull/373),	

backported to 2.3
Hacks around various HHVM glitches
TYPO3 Flow 2.1
Unit tests, PHP 5.5
Tests: 4186, Assertions: 10145, Failures: 1, Incomplete: 1, Skipped: 95
Unit tests, HHVM	

(with compatibility patches)
Tests: 4186, Assertions: 10057, Failures: 14, Errors: 21, Incomplete: 1, Skipped: 95
99,98 %
99,14 %
Configuration/Production.hdf
Server {	
SourceRoot = /var/www/my-flow-site/Web	
DefaultDocument = index.php	
Port = 9000	
ThreadCount = 100	
}



Eval {	
Jit = true	
}	
!
VirtualHost {	
my-flow-site {	
Pattern = .*	
ServerVariables {	
FLOW_REWRITEURLS = 1	
FLOW_CONTEXT = Production	
}
Server {	
SourceRoot = /var/www/my-flow-site/Web	
DefaultDocument = index.php	
Port = 9000	
ThreadCount = 100	
}



Eval {	
Jit = true	
}	
!
VirtualHost {	
my-flow-site {	
Pattern = .*	
ServerVariables {	
FLOW_REWRITEURLS = 1	
FLOW_CONTEXT = Production	
}	
RewriteRules {	
persistentresources {	
pattern = ^/?(_Resources/Persistent/.{40})/.+(..+)	
to = $1$2	
}	
!
index {	
pattern = ^(.*)	
to = index.php/$1	
qsa = true	
}	
}	
}	
}	
!
StaticFile {	
Extensions {	
css = text/css	
js = text/javascript	
png = image/png	
jpg = image/jpeg	
}	
}
TYPO3:	
Flow:	
core:	
phpBinaryPathAndFilename: /usr/bin/hhvm	
subRequestPhpIniPathAndFilename: false
Configuration/Settings.yaml	

(configured for speed)
Use HHVM on sub-requests, too	

for even more performance.
Nico Kaiser, CC BY	

http://www.flickr.com/photos/nicokaiser/6070496071/
TYPO3:	
Flow:	
core:	
phpBinaryPathAndFilename: /usr/bin/php	
subRequestPhpIniPathAndFilename: /etc/php5/cli/php.ini
Always specify a php.ini or “false”.	

Automatic detection will fail.
Configuration/Settings.yaml	

(configured conservatively)
Start it
> FLOW_CONTEXT=PRODUCTION hhvm -m server -c Configuration/Production.hdf
0
20
40
60
80
Concurrency
50 100 150 200 250 300 350 400 450 500
PHP (Apache+opcache) HHVM (standalone)
HHVM (FCGI+Apache) HHVM (FCGI+nginx)
Requests per second	

TYPO3 Neos 1.0.2, production mode, with HHVM patches
0
4
8
12
16
Concurrency
50 100 150 200 250 300 350 400 450 500
PHP (Apache+opcache) HHVM (standalone)
HHVM (FCGI+Apache) HHVM (FCGI+nginx)
Response times	

TYPO3 Neos 1.0.2, production mode, with HHVM patches
91 %
93,25 %
95,5 %
97,75 %
100 %
Concurrency
50 100 150 200 250 300 350 400 450 500
PHP (Apache+opcache) HHVM (standalone)
HHVM (FCGI+Apache) HHVM (FCGI+nginx)
Availability	

TYPO3 Neos 1.0.2, production mode, with HHVM patches
Don't forget!	

Always enable production mode!
> composer create-project 	
mittwald-typo3/neos-hhvm-distribution
> composer create-project 	
mittwald-typo3/flow-hhvm-distribution
Contribute:	

https://github.com/mittwald/flow-hhvm
> composer create-project 	
mittwald-typo3/neos-hhvm-distribution
Apply compatibility patches	

Adjust configuration	

Create appropriate HDF configuration file
What does it do?
HHVM
FastCGI
Static	

files
nginx
Use HHVM as FastCGI backend
Server {	
Type = fastcgi	
FileSocket = /var/run/hhvm.sock	
SourceRoot = /var/www/my-flow-site/Web	
DefaultDocument = index.php	
ThreadCount = 100	
}
configuration.hdf
Use HHVM as FastCGI backend
ProxyPassMatch ^/_Resources !	
ProxyPass / fcgi://127.0.0.1:9000/var/www/flow/Web/
Apache configuration
location /_Resources {	
try_files $uri;	
}	
!
location / {	
fastcgi_pass 127.0.0.1:9000;	
fastcgi_index index.php;	
fastcgi_param SCRIPT_FILENAME /var/www/flow/Web/$fastcgi_script_name;	
include fastcgi_params;	
}
Nginx configuration
Tobias Schlitt, CC-BY-NC-SA	

http://www.flickr.com/photos/tobiasschlitt/2644905363/
Duncan
 Hull,

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Kubernetes API - deep dive into the kube-apiserver
Kubernetes API - deep dive into the kube-apiserverKubernetes API - deep dive into the kube-apiserver
Kubernetes API - deep dive into the kube-apiserver
 
Two Years In Production With Kubernetes - An Experience Report
Two Years In Production With Kubernetes - An Experience ReportTwo Years In Production With Kubernetes - An Experience Report
Two Years In Production With Kubernetes - An Experience Report
 
Running Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on HadoopRunning Airflow Workflows as ETL Processes on Hadoop
Running Airflow Workflows as ETL Processes on Hadoop
 
Patterns and practices for real-world event-driven microservices
Patterns and practices for real-world event-driven microservicesPatterns and practices for real-world event-driven microservices
Patterns and practices for real-world event-driven microservices
 
Kube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul CzarkowskiKube Your Enthusiasm - Paul Czarkowski
Kube Your Enthusiasm - Paul Czarkowski
 
Cloud native - CI/CD
Cloud native - CI/CDCloud native - CI/CD
Cloud native - CI/CD
 
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
Provisioning SPFx Solutions to SharePoint Online using PnP, ALM APIs and more!
 
DEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and Python
DEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and PythonDEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and Python
DEVNET-1001 Coding 101: How to Call REST APIs from a REST Client and Python
 
Apache Airflow Introduction
Apache Airflow IntroductionApache Airflow Introduction
Apache Airflow Introduction
 
What's new in c# 8.0
What's new in c# 8.0What's new in c# 8.0
What's new in c# 8.0
 
OpenIO Summit'17 - Grid for Apps
OpenIO Summit'17 - Grid for AppsOpenIO Summit'17 - Grid for Apps
OpenIO Summit'17 - Grid for Apps
 
Container orchestration on_aws
Container orchestration on_awsContainer orchestration on_aws
Container orchestration on_aws
 
Apollo Client - Meetup Curitiba
Apollo Client - Meetup CuritibaApollo Client - Meetup Curitiba
Apollo Client - Meetup Curitiba
 
Build a RESTful API with the Serverless Framework
Build a RESTful API with the Serverless FrameworkBuild a RESTful API with the Serverless Framework
Build a RESTful API with the Serverless Framework
 
BOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyoBOSH / CF Deployment in modern ways #cf_tokyo
BOSH / CF Deployment in modern ways #cf_tokyo
 
Power Shell and Sharepoint 2013
Power Shell and Sharepoint 2013Power Shell and Sharepoint 2013
Power Shell and Sharepoint 2013
 
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngineGoogle Cloud Endpoints: Building Third-Party APIs on Google AppEngine
Google Cloud Endpoints: Building Third-Party APIs on Google AppEngine
 
PostgREST Design Philosophy
PostgREST Design PhilosophyPostgREST Design Philosophy
PostgREST Design Philosophy
 
Serverless Architecture - A Gentle Overview
Serverless Architecture - A Gentle OverviewServerless Architecture - A Gentle Overview
Serverless Architecture - A Gentle Overview
 
Serverless and React
Serverless and ReactServerless and React
Serverless and React
 

Semelhante a InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM

Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11
Combell NV
 
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
Muhamad Al Imran
 
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
Muhamad Al Imran
 

Semelhante a InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM (20)

Running PHP on Nginx
Running PHP on NginxRunning PHP on Nginx
Running PHP on Nginx
 
Diving into HHVM Extensions (Brno PHP Conference 2015)
Diving into HHVM Extensions (Brno PHP Conference 2015)Diving into HHVM Extensions (Brno PHP Conference 2015)
Diving into HHVM Extensions (Brno PHP Conference 2015)
 
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)
 
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
 
The new features of PHP 7
The new features of PHP 7The new features of PHP 7
The new features of PHP 7
 
Php through the eyes of a hoster confoo
Php through the eyes of a hoster confooPhp through the eyes of a hoster confoo
Php through the eyes of a hoster confoo
 
Diving into HHVM Extensions (php[tek] 2016)
Diving into HHVM Extensions (php[tek] 2016)Diving into HHVM Extensions (php[tek] 2016)
Diving into HHVM Extensions (php[tek] 2016)
 
php & performance
 php & performance php & performance
php & performance
 
Running PHP on nginx
Running PHP on nginxRunning PHP on nginx
Running PHP on nginx
 
Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!Apache and PHP: Why httpd.conf is your new BFF!
Apache and PHP: Why httpd.conf is your new BFF!
 
Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009Prepare for PHP Test Fest 2009
Prepare for PHP Test Fest 2009
 
Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11Php through the eyes of a hoster phpbnl11
Php through the eyes of a hoster phpbnl11
 
php basics
php basicsphp basics
php basics
 
PHP
PHPPHP
PHP
 
PHP & Performance
PHP & PerformancePHP & Performance
PHP & Performance
 
Php i basic chapter 3
Php i basic chapter 3Php i basic chapter 3
Php i basic chapter 3
 
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
Php i basic chapter 3 (syahir chaer's conflicted copy 2013-04-22)
 
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
Php i basic chapter 3 (afifah rosli's conflicted copy 2013-04-23)
 
Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2
 
Php mysql training-in-mumbai
Php mysql training-in-mumbaiPhp mysql training-in-mumbai
Php mysql training-in-mumbai
 

Mais de mhelmich (6)

InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
InspiringCon15: Bringing TYPO3 Legacy Applications into the FlowInspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
InspiringCon15: Bringing TYPO3 Legacy Applications into the Flow
 
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 FlowT3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
T3CON14EU: Migrating from TYPO3 CMS to TYPO3 Flow
 
Verteilte Konfigurationsmanagement-Systeme mit Open Source-Komponenten
Verteilte Konfigurationsmanagement-Systeme mit Open Source-KomponentenVerteilte Konfigurationsmanagement-Systeme mit Open Source-Komponenten
Verteilte Konfigurationsmanagement-Systeme mit Open Source-Komponenten
 
T3CON13: Web application development using Behaviour Driven Development
T3CON13: Web application development using Behaviour Driven DevelopmentT3CON13: Web application development using Behaviour Driven Development
T3CON13: Web application development using Behaviour Driven Development
 
Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
Scalable Deployment Architectures with TYPO3 Surf, Git and JenkinsScalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
Scalable Deployment Architectures with TYPO3 Surf, Git and Jenkins
 
mm_forum 2.0
mm_forum 2.0mm_forum 2.0
mm_forum 2.0
 

Último

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Último (20)

Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUKSpring Boot vs Quarkus the ultimate battle - DevoxxUK
Spring Boot vs Quarkus the ultimate battle - DevoxxUK
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 
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
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 

InspiringCon14: ElePHPants on speed: Running TYPO3 Flow on HipHop VM