SlideShare ist ein Scribd-Unternehmen logo
1 von 65
Downloaden Sie, um offline zu lesen
Hello	World
@Jcowie
Magento	ECG
Mage-Casts
Github:	Jamescowie
Background	on	OOP	
Insight	into	my	thinking
Insight	into	my	workflow	
A	fun	30	mins	
Objectively
Object	Oriented	Programming
Messaging
Principles	of	GOOD	software
SOLID
Uncle	Bob	Martin
Single	Responsibility	Principle
A	class	should	have	one	and	only	
one	reason	to	change,	meaning	
that	a	class	should	have	only	one	
job.
Open	Closed	
Objects	or	entities	should	be	open	
for	extension,	but	closed	for	
modification.
/**
* @api
*/
interface	ProductRepositoryInterface
{
……
}
<preference	
for="MagentoCatalogApiProductRepositoryInterface"		
type="MagentoCatalogModelProductRepository”
/>
Interface	Segregation	Principle
A	client	should	never	be	forced	to	
implement	an	interface	that	it	
doesn’t	use	or	clients	shouldn’t	be	
forced	to	depend	on	methods	they	
do	not	use.
Dependency	Inversion	Principle
Entities	must	depend	on	
abstractions	not	on	concretions.	It	
states	that	the	high	level	module	
must	not	depend	on	the	low	level	
module,	but	they	should	depend	
on	abstractions.
/**
* @api
*/
interface	ProductRepositoryInterface
{
……
}
<preference	
for="MagentoCatalogApiProductRepositoryInterface"		
type="MagentoCatalogModelProductRepository”
/>
I
A	framework	is	just	one	of	the	tools	
to	help	you	developer	“Better”	and	
“faster”	 - Symfony documentation
Convenient	code Maintainable	code
Convenient	code Maintainable	code
Coupled	code
Mixed	responsibility
Bound	to	framework
Harder	to	test
Convenient	code Maintainable	code
Coupled	code
Mixed	responsibility
Bound	to	framework
Harder	to	test
Decoupled	code
Separated	domain
Framework	agnostic
Easier	to	test
public	function	execute()
{
if	($this->_request->getParam(MagentoFrameworkAppActionInterface::PARAM_NAME_URL_ENCODED))	{
return	$this->resultRedirectFactory->create()->setUrl($this->_redirect->getRedirectUrl());
}
$category	=	$this->_initCategory();
if	($category)	{
$this->layerResolver->create(Resolver::CATALOG_LAYER_CATEGORY);
$settings	=	$this->_catalogDesign->getDesignSettings($category);
//	apply	custom	design
if	($settings->getCustomDesign())	{
$this->_catalogDesign->applyCustomDesign($settings->getCustomDesign());
}
$this->_catalogSession->setLastViewedCategoryId($category->getId());
…..
}
Magento	can	be	convenient
class	Index	extends	MagentoFrameworkAppActionAction
/**	@var MagentoFrameworkViewResultPageFactory */
protected	$resultPageFactory;
public	function	__construct(
MagentoFrameworkAppActionContext	$context,
MagentoFrameworkViewResultPageFactory $resultPageFactory
)	{
$this->resultPageFactory =	$resultPageFactory;
parent::__construct($context);
}
Large	number	of	dependencies
MagentoFrameworkAppActionContext	$context,
MagentoFrameworkViewResultPageFactory $resultPageFactory
MagentoFrameworkRegistry	$coreRegistry,
MagentoStoreModelStoreManagerInterface $storeManager,
CategoryRepositoryInterface $categoryRepository
Unit	testing	becomes	hard
The	“convenient”	controller	requires
more	Integration	Tests
Potential	code	smell
Lets	see	and	Example
protected	function	configure()
{
$this->setName('generate:showcaseproducefeed');
$this->setDescription('Generate	a	produce	feed	of	showcase	products	in	json');
parent::configure();
}
protected	function	execute(InputInterface $input,	OutputInterface $output)
{
$product	=	$this->products->get('24-MB01');
$writer	=	$this->filesystem->getDirectoryWrite('var');
$file	=	$writer->openFile('showcase.json',	'w');
try	{
$file->lock();
try	{
$file->write(json_encode(['product_name'		=>	$product->getName(),
'product_price'	=>	$product->getPrice()
]));
}	finally	{
$file->unlock();
}
}	finally	{
$file->close();
}
$output->writeln("Feed	Generated");
}
Can	we	add	XML	feed	generation
protected	function	execute(InputInterface $input,	OutputInterface $output)
{
$product	=	$this->products->get('24-MB01');
$writer	=	$this->filesystem->getDirectoryWrite('var');
$file	=	$writer->openFile('showcase.json',	'w');
$xmlFile =	$writer->openFile('showcase.xml',	'w');
try	{
$file->lock();
try	{
$file->write(json_encode(['product_name'		=>	$product->getName(),
'product_price'	=>	$product->getPrice()
]));
$showcaseXML =	new	SimpleXMLElement("<showcase></showcase>");
$showcaseXML->addAttribute('showcase-products',	'today');
$showcaseAttributes =	$showcaseXML->addChild($product->getName());
$showcaseAttributes->addAttribute('price',	$product->getPrice());
$xmlFile->write($showcaseXML->asXML());
}	finally	{
$file->unlock();
}…
$output->writeln("Feed	Generated");
}
Our	class	had	reason	to	change
How	can	we	test	this	?
public	function	__construct(
MagentoCatalogApiProductRepositoryInterface $productRepository,
MagentoFrameworkAppState	$state,
MagentoFrameworkFilesystem	$filesystem
)	{
$state->setAreaCode('frontend');
$this->products	=	$productRepository;
$this->filesystem	=	$filesystem;
parent::__construct();
}
$showcaseXML =	new	SimpleXMLElement("<showcase></showcase>");
Scenario:	Products	are	presented	in	JSON	file
Given	The	generate	command	exists
When	I	run	the	generate	command
Then	I	should	see	a	JSON	file	created
use	BehatBehatContextContext;
use	SymfonyComponentProcessProcess;
use	SymfonyComponentFilesystemFilesystem;
class	FeatureContext implements	Context
{
private	$output;
private	$filesystem;
public	function	__construct()
{
$this->filesystem	=	new	Filesystem();
}
}
/**
*	@Given The	generate	command	exists
*/
public	function	theGenerateCommandExists()
{
return	true;
}
/**
* @When	I	run	the	generate	command
*/
public	function	iRunTheGenerateCommand()
{
$process	=	new	Process("php "	.	getcwd()	
.	"/../../../generate:showcaseproducefeed");
$process->run();
$this->output	=	$process->getOutput();
}
/**
* @Then	I	should	see	a	JSON	file	created
*/
public	function	iShouldSeeAJsonFileCreated()
{
expect(file_exists(__dir__	.	
'/../../../../../../var/showcase.json'))->toBe(true);
}
Tests	Pass
Scenario:	Products	are	presented	in	XML	file
Given	The	generate	command	exists
When	I	run	the	generate	command
Then	I	should	see	a	XML	file	created
Tests	Fail
We	could	add	this	into	the	command	buuuut.
Open	Closed	Principle
<?php
namespace	TitansShowcaseApi;
interface	BuilderInterface
{
public	function	build($data);
}
Create	a	scenario	for	extraction
Scenario:	Class	file	does	return	json
When	I	call	the	JSONBuilder class
Then	I	should	be	returned	a	json string
public	function	__construct()
{
$this->builder	=	
new	TitansShowcaseCommandsBuildersJsonBuilder();
}
/**
* @When	I	call	the	JSONBuilder class
*/
public	function	iCallTheJsonbuilderClass()
{
$this->output	=	$this->builder->build(['name'	=>	'james']);
}
/**
* @Then I	should	be	returned	a	json string
*/
public	function	iShouldBeReturnedAJsonString()
{
expect($this->output)->toBe(json_encode(['name'	=>	'james']));
}
<?php
namespace	TitansShowcaseCommandsBuilders;
class	JsonBuilder implements	
TitansShowcaseApiBuilderInterface
{
public	function	build($data)
{
return	json_encode($data);
}
}
<?php
namespace	TitansShowcaseCommandsBuilders;
class	JsonBuilder implements	TitansShowcaseApiBuilderInterface
{
public	function	build($data)
{
return	json_encode($data);
}
}
<?php
namespace	TitansShowcaseCommandsBuilders;
class	XmlBuilder implements	TitansShowcaseApiBuilderInterface
{
public	function	build($data)
{
return	….
}
}
public	function	__construct(
TitansShowcaseCommandsBuildersJsonBuilder $jsonBuilder
)	{
$this->jsonBuilder =	$jsonBuilder;
parent::__construct();
}
protected	function	execute(InputInterface $input,	OutputInterface
$output)
{
$product	=	$this->products->get('24-MB01');
$this->writer->write(
'showcase.json',	
$this->jsonBuilder->build(
['product_name'	=>	$product->getName()]
)
);
}
Command	Class
Builder	Class
Sends	Message
Command	Class Responsibility	for	handling	the	command
JSON	Builder	Class Responsibility	Building	JSON	based	on	a	message
Value	Object.
Command	Class
Builder	Class
Integration	Tests
Framework	code
Unit	Tests
Library	code
What	are	the	benefits	?
We	now	pass	messages	between	objects
We	are	testing	to	some	level	using	Behat
We	have	clear	Objects	
We	use	Value	Objects

Weitere ähnliche Inhalte

Was ist angesagt?

introduction to Angularjs basics
introduction to Angularjs basicsintroduction to Angularjs basics
introduction to Angularjs basicsRavindra K
 
Java applet basics
Java applet basicsJava applet basics
Java applet basicsSunil Pandey
 
Building Large Scale Javascript Application
Building Large Scale Javascript ApplicationBuilding Large Scale Javascript Application
Building Large Scale Javascript ApplicationAnis Ahmad
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet Sagar Nakul
 

Was ist angesagt? (8)

introduction to Angularjs basics
introduction to Angularjs basicsintroduction to Angularjs basics
introduction to Angularjs basics
 
Appletjava
AppletjavaAppletjava
Appletjava
 
Java applet basics
Java applet basicsJava applet basics
Java applet basics
 
Applets in Java
Applets in JavaApplets in Java
Applets in Java
 
Building Large Scale Javascript Application
Building Large Scale Javascript ApplicationBuilding Large Scale Javascript Application
Building Large Scale Javascript Application
 
Frontend training
Frontend trainingFrontend training
Frontend training
 
Java applet
Java appletJava applet
Java applet
 
Strutsjspservlet
Strutsjspservlet Strutsjspservlet
Strutsjspservlet
 

Andere mochten auch

Aux jeunes d
Aux jeunes dAux jeunes d
Aux jeunes dhajj2013
 
Ytesonhuong huong-dan-su-dung-may-huyet-ap-microlife-a3basic
Ytesonhuong huong-dan-su-dung-may-huyet-ap-microlife-a3basicYtesonhuong huong-dan-su-dung-may-huyet-ap-microlife-a3basic
Ytesonhuong huong-dan-su-dung-may-huyet-ap-microlife-a3basicSon Huong Medical Equipment
 
తెలంగాణలో అంతా గప్‌చుప్
 తెలంగాణలో అంతా గప్‌చుప్ తెలంగాణలో అంతా గప్‌చుప్
తెలంగాణలో అంతా గప్‌చుప్Desi Twits
 
Task 7 – the forest sample script
Task 7 – the forest sample scriptTask 7 – the forest sample script
Task 7 – the forest sample scriptjordonj98
 
Poruka ajatollaha hameneija, lidera irana, svekolikoj omladini evrope i sj...
Poruka  ajatollaha hameneija,  lidera irana,  svekolikoj omladini evrope i sj...Poruka  ajatollaha hameneija,  lidera irana,  svekolikoj omladini evrope i sj...
Poruka ajatollaha hameneija, lidera irana, svekolikoj omladini evrope i sj...hajj2013
 
Skills_for_Working_in_the_Hospitality_and_Catering_Industry_RoC_v2
Skills_for_Working_in_the_Hospitality_and_Catering_Industry_RoC_v2Skills_for_Working_in_the_Hospitality_and_Catering_Industry_RoC_v2
Skills_for_Working_in_the_Hospitality_and_Catering_Industry_RoC_v2Abedalrhman Habashneh
 
Cronograma año lectivo 2016 2017
Cronograma año lectivo 2016   2017Cronograma año lectivo 2016   2017
Cronograma año lectivo 2016 2017MEDARDO MENA
 
Cronograma escolar costa 2015 2016
Cronograma escolar costa 2015 2016Cronograma escolar costa 2015 2016
Cronograma escolar costa 2015 2016Juana Alberca
 
Calendario Escolar MEP 2016.
Calendario Escolar MEP 2016.Calendario Escolar MEP 2016.
Calendario Escolar MEP 2016.Gustavo Bolaños
 
Hen phế quản
Hen phế quảnHen phế quản
Hen phế quảnMartin Dr
 

Andere mochten auch (19)

Bose MIE2i Evaluation
Bose MIE2i EvaluationBose MIE2i Evaluation
Bose MIE2i Evaluation
 
Soprintendente Cozzolino in bilico
Soprintendente Cozzolino in bilicoSoprintendente Cozzolino in bilico
Soprintendente Cozzolino in bilico
 
Roano, Claudio e gli Eventi
Roano, Claudio e gli EventiRoano, Claudio e gli Eventi
Roano, Claudio e gli Eventi
 
Aux jeunes d
Aux jeunes dAux jeunes d
Aux jeunes d
 
Ytesonhuong huong-dan-su-dung-may-huyet-ap-microlife-a3basic
Ytesonhuong huong-dan-su-dung-may-huyet-ap-microlife-a3basicYtesonhuong huong-dan-su-dung-may-huyet-ap-microlife-a3basic
Ytesonhuong huong-dan-su-dung-may-huyet-ap-microlife-a3basic
 
తెలంగాణలో అంతా గప్‌చుప్
 తెలంగాణలో అంతా గప్‌చుప్ తెలంగాణలో అంతా గప్‌చుప్
తెలంగాణలో అంతా గప్‌చుప్
 
Task 7 – the forest sample script
Task 7 – the forest sample scriptTask 7 – the forest sample script
Task 7 – the forest sample script
 
Resume 1
Resume 1Resume 1
Resume 1
 
Umberto Ranieri
Umberto RanieriUmberto Ranieri
Umberto Ranieri
 
Types
TypesTypes
Types
 
stlc
stlcstlc
stlc
 
Poruka ajatollaha hameneija, lidera irana, svekolikoj omladini evrope i sj...
Poruka  ajatollaha hameneija,  lidera irana,  svekolikoj omladini evrope i sj...Poruka  ajatollaha hameneija,  lidera irana,  svekolikoj omladini evrope i sj...
Poruka ajatollaha hameneija, lidera irana, svekolikoj omladini evrope i sj...
 
Skills_for_Working_in_the_Hospitality_and_Catering_Industry_RoC_v2
Skills_for_Working_in_the_Hospitality_and_Catering_Industry_RoC_v2Skills_for_Working_in_the_Hospitality_and_Catering_Industry_RoC_v2
Skills_for_Working_in_the_Hospitality_and_Catering_Industry_RoC_v2
 
Belfiore
BelfioreBelfiore
Belfiore
 
Cronograma año lectivo 2016 2017
Cronograma año lectivo 2016   2017Cronograma año lectivo 2016   2017
Cronograma año lectivo 2016 2017
 
Cronograma escolar costa 2015 2016
Cronograma escolar costa 2015 2016Cronograma escolar costa 2015 2016
Cronograma escolar costa 2015 2016
 
Calendario Escolar MEP 2016.
Calendario Escolar MEP 2016.Calendario Escolar MEP 2016.
Calendario Escolar MEP 2016.
 
Hen phế quản
Hen phế quảnHen phế quản
Hen phế quản
 
Fases en un proyecto de investigacion
Fases en un proyecto de investigacionFases en un proyecto de investigacion
Fases en un proyecto de investigacion
 

Ähnlich wie Mage Titans 2016 - Object(ivly) Thinking

Android Dagger 2
Android  Dagger 2Android  Dagger 2
Android Dagger 2Sanket Shah
 
Dependency injection using dagger2
Dependency injection using dagger2Dependency injection using dagger2
Dependency injection using dagger2Javad Hashemi
 
Workshop: Refactoring Legacy PHP: The Complete Guide
Workshop: Refactoring Legacy PHP: The Complete Guide Workshop: Refactoring Legacy PHP: The Complete Guide
Workshop: Refactoring Legacy PHP: The Complete Guide Junade Ali
 
Jump start to OOP, OOAD, and Design Pattern
Jump start to OOP, OOAD, and Design PatternJump start to OOP, OOAD, and Design Pattern
Jump start to OOP, OOAD, and Design PatternNishith Shukla
 
Refactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test AutomationRefactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test AutomationStephen Fuqua
 
Feature Development with jQuery
Feature Development with jQueryFeature Development with jQuery
Feature Development with jQueryMichael Edwards
 
Overview of the AngularJS framework
Overview of the AngularJS framework Overview of the AngularJS framework
Overview of the AngularJS framework Yakov Fain
 
Dependency injection using Google guice
Dependency injection using Google guiceDependency injection using Google guice
Dependency injection using Google guiceAman Verma
 
Software Design Patterns. Part I :: Structural Patterns
Software Design Patterns. Part I :: Structural PatternsSoftware Design Patterns. Part I :: Structural Patterns
Software Design Patterns. Part I :: Structural PatternsSergey Aganezov
 
Inversion of control using dependency injection in Web APIs using Unity Conta...
Inversion of control using dependency injection in Web APIs using Unity Conta...Inversion of control using dependency injection in Web APIs using Unity Conta...
Inversion of control using dependency injection in Web APIs using Unity Conta...Akhil Mittal
 
King Tut Architecture
King Tut ArchitectureKing Tut Architecture
King Tut ArchitectureGary Pedretti
 
Creating and destroying objects
Creating and destroying objectsCreating and destroying objects
Creating and destroying objectsSandeep Chawla
 

Ähnlich wie Mage Titans 2016 - Object(ivly) Thinking (20)

Android Dagger 2
Android  Dagger 2Android  Dagger 2
Android Dagger 2
 
Dependency injection using dagger2
Dependency injection using dagger2Dependency injection using dagger2
Dependency injection using dagger2
 
Workshop: Refactoring Legacy PHP: The Complete Guide
Workshop: Refactoring Legacy PHP: The Complete Guide Workshop: Refactoring Legacy PHP: The Complete Guide
Workshop: Refactoring Legacy PHP: The Complete Guide
 
Jump start to OOP, OOAD, and Design Pattern
Jump start to OOP, OOAD, and Design PatternJump start to OOP, OOAD, and Design Pattern
Jump start to OOP, OOAD, and Design Pattern
 
Refactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test AutomationRefactoring Legacy Web Forms for Test Automation
Refactoring Legacy Web Forms for Test Automation
 
Introduction to Angular Js
Introduction to Angular JsIntroduction to Angular Js
Introduction to Angular Js
 
Feature Development with jQuery
Feature Development with jQueryFeature Development with jQuery
Feature Development with jQuery
 
Overview of the AngularJS framework
Overview of the AngularJS framework Overview of the AngularJS framework
Overview of the AngularJS framework
 
Gof design patterns
Gof design patternsGof design patterns
Gof design patterns
 
Dependency injection using Google guice
Dependency injection using Google guiceDependency injection using Google guice
Dependency injection using Google guice
 
Software Design Patterns. Part I :: Structural Patterns
Software Design Patterns. Part I :: Structural PatternsSoftware Design Patterns. Part I :: Structural Patterns
Software Design Patterns. Part I :: Structural Patterns
 
Introduction to django
Introduction to djangoIntroduction to django
Introduction to django
 
Feature toggles
Feature togglesFeature toggles
Feature toggles
 
Inversion of control using dependency injection in Web APIs using Unity Conta...
Inversion of control using dependency injection in Web APIs using Unity Conta...Inversion of control using dependency injection in Web APIs using Unity Conta...
Inversion of control using dependency injection in Web APIs using Unity Conta...
 
java.pptx
java.pptxjava.pptx
java.pptx
 
Desiging for Modularity with Java 9
Desiging for Modularity with Java 9Desiging for Modularity with Java 9
Desiging for Modularity with Java 9
 
Patterns In-Javascript
Patterns In-JavascriptPatterns In-Javascript
Patterns In-Javascript
 
King Tut Architecture
King Tut ArchitectureKing Tut Architecture
King Tut Architecture
 
Designing Better API
Designing Better APIDesigning Better API
Designing Better API
 
Creating and destroying objects
Creating and destroying objectsCreating and destroying objects
Creating and destroying objects
 

Kürzlich hochgeladen

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 

Kürzlich hochgeladen (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 

Mage Titans 2016 - Object(ivly) Thinking