SlideShare a Scribd company logo
PHP Design Patterns
in Joomla!
@yveshoppe
Was sind Design Patterns?
Allgemein anerkannte
Lösungen für
wiederkehrende Probleme
Anti Patterns
$_REQUEST anstelle von JInput
Reinventing the square
wheel
Mambo / Joomla 1.0
Ball of Mud
Als Stackoverflow einen Tag nicht erreichbar
war sank die Produktivität um 80 %!
Copy & Paste
Perfekte Lösungen für eine nicht perfekte
Welt!
Overengineering
Ein Objekt welche alle Aufgaben und Daten
in sich vereint.
God Object
Entwurfsmuster, Antimuster, abstrakte
Fabrik, Schablonenmethode,
Fliegengewicht, Gasfabrik, Wunderwaffe
Translating Design
Patterns into German!
Quelle:
Wikipedia.de
Geschichte der Design Patterns
Gang of Four (1994)
Erich Gamma
Ralph Johnson
Richard Helm
John Vlissides
23 Design Patterns
in Kategorien
Einteilung von Design
Patterns
$bla = JFilterInput::getInstance()->clean($bla);
$db = JFactory::getDbo();
Creational Patterns
Bridge Pattern (Ouptut raw, html, component, feed)
Structual Patterns
JTableObserverContenthistory::createObserver($this,
array('typeAlias' => 'com_tags.tag'));
Behavioral Patterns
Revisions / Versions in Joomla 3.x!
Observer Pattern
Tag History
Observer Pattern
Speichern
interface JObserverInterface
{
public static function createObserver (
JObservableInterface $observableObject,
$params = array()
);
}
libraries/joomla/observer/interface.php
abstract class JTableObserver implements
JObserverInterface
{
public function __construct(JTableInterface $table)
{
$table->attachObserver($this);
..
}
public function onAfterStore(&$result)
{
}
}
libraries/joomla/table/observer.php
class JTableObserverContenthistory extends JTableObserver
{
public static function createObserver(JObservableInterface
$observableObject, $params = array())
{
$typeAlias = $params['typeAlias'];
$observer = new self($observableObject);
$observer->contenthistoryHelper = ..;
return $observer;
}
public function onAfterStore(&$result)
{
..
$this->contenthistoryHelper->store($this->table);
}
libraries/joomla/table/observer/contenthistory.php
class TagsTableTag extends JTableNested
{
public function __construct($db)
{
parent::__construct('#__tags', 'id', $db);
JTableObserverContenthistory::createObserver
($this, array('typeAlias' => 'com_tags.tag'));
}
libraries/joomla/observer/interface.php
Model View Controller
Pattern
Observer, Composite und Strategy Pattern
vereint.
MVC Schema
Verarbeitung von Aufgaben (tasks) und
Events
Controller
class ContentControllerArticle extends JControllerForm
{
public function save($key = null, $urlVar = null)
{
$model = $this->getModel();
$table = $model->getTable();
..
$model->save($validData)
..
$viewType = 'html';
$view = $this->getView($viewName, $viewType, '', array('base_path'
=> $this->basePath, 'layout' => $viewLayout));
$view->display();
administrator/components/com_content/controllers/article.php
Stark vereinfacht!
Die Applikations-Logik (CRUD etc)
Model
class ContentModelArticle extends JModelAdmin
{
public function save($data)
{
// Filtern, Aufräumen, Plugin Events und Co.
...
$table = $this->getTable();
if (!$table->bind($data))
{
$this->setError($table->getError());
}
..
// Speichern in der Datenbank..
..
return true;
administrator/components/com_content/models/article.php
Die Ausgabeschicht
(HTML, RAW, COMPONENT etc.)
View
class ContentViewArticle extends JViewLegacy
{
public function display($tpl = null)
{
echo “Erfolgreich gespeichert..”;
administrator/components/com_content/views/article/view.html.php
JLoader::register(
'ContentHelper', JPATH_ADMINISTRATOR .
'/components/com_content/helpers/content.php'
);
Auto-Loading (PSR)
(statt require(_once))
Warum JLoader?
Performance
&
Einfachheit!
abstract class JLoader
{
public static function setup($enablePsr = true, $enablePrefixes = true,
$enableClasses = true)
{
..
spl_autoload_register(array('JLoader', 'load'))
spl_autoload_register(array('JLoader', 'loadByPsr0'));
spl_autoload_register(array('JLoader', 'loadByAlias'));
libraries/loader.php
abstract class JLoader
{
protected static $classes = array();
public static function register($class, $path,
$force = true)
{
..
self::$classes[$class] = $path;
}
public static function discover($classPrefix, $parentPath, $force = true,
$recurse = false)
{
..
foreach ($iterator as $file)
self::register($class, $file->getPath() . '/' . $fileName);
libraries/loader.php
abstract class JLoader
{
public static function load($class)
{
..
include_once self::$classes[$class];
libraries/loader.php
JUpdater -> update($type)
Fragen?
Vielen Dank!

More Related Content

What's hot

Hands on AngularJS
Hands on AngularJSHands on AngularJS
Hands on AngularJS
Thomas Fankhauser
 
龍華大學前端技術分享 Part2
龍華大學前端技術分享 Part2龍華大學前端技術分享 Part2
龍華大學前端技術分享 Part2
Jia-Long Yeh
 
Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
LEDC 2016
 
Drupal Development (Part 2)
Drupal Development (Part 2)Drupal Development (Part 2)
Drupal Development (Part 2)
Jeff Eaton
 
Backbone - TDC 2011 Floripa
Backbone - TDC 2011 FloripaBackbone - TDC 2011 Floripa
Backbone - TDC 2011 Floripa
Rafael Felix da Silva
 
Slimme Joomla! Templating Tips en Truuks
Slimme Joomla! Templating Tips en TruuksSlimme Joomla! Templating Tips en Truuks
Slimme Joomla! Templating Tips en Truuks
ThemePartner
 

What's hot (6)

Hands on AngularJS
Hands on AngularJSHands on AngularJS
Hands on AngularJS
 
龍華大學前端技術分享 Part2
龍華大學前端技術分享 Part2龍華大學前端技術分享 Part2
龍華大學前端技術分享 Part2
 
Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
 
Drupal Development (Part 2)
Drupal Development (Part 2)Drupal Development (Part 2)
Drupal Development (Part 2)
 
Backbone - TDC 2011 Floripa
Backbone - TDC 2011 FloripaBackbone - TDC 2011 Floripa
Backbone - TDC 2011 Floripa
 
Slimme Joomla! Templating Tips en Truuks
Slimme Joomla! Templating Tips en TruuksSlimme Joomla! Templating Tips en Truuks
Slimme Joomla! Templating Tips en Truuks
 

Viewers also liked

Responsive Design and Joomla!
Responsive Design and Joomla!Responsive Design and Joomla!
Responsive Design and Joomla!
JoomlaChicago - Loop
 
Edtc 245 presentation
Edtc 245 presentationEdtc 245 presentation
Edtc 245 presentation
mthibeaux
 
Untitled Presentation(2)
Untitled Presentation(2)Untitled Presentation(2)
Untitled Presentation(2)
magda89
 
Richard presentation march
Richard presentation marchRichard presentation march
Richard presentation march
bbptoronto
 
Ajax and Accessibiity
Ajax and AccessibiityAjax and Accessibiity
Ajax and Accessibiity
Mark Meeker
 
No es Verdad
No es VerdadNo es Verdad
No es Verdad
Nico de Alba
 
Halloween
HalloweenHalloween
Halloween
Yueh-shu Li
 
Bookstore
BookstoreBookstore
Bookstore
Yueh-shu Li
 
Rubi Mantilla 2do Deber
Rubi Mantilla 2do DeberRubi Mantilla 2do Deber
Rubi Mantilla 2do Deber
rubigissel
 
Agentziaren profesionalak publizitate prozesuan
Agentziaren profesionalak publizitate prozesuanAgentziaren profesionalak publizitate prozesuan
Agentziaren profesionalak publizitate prozesuanAsier Lemuria
 
forumpaper_5_punjabi_sengupta_bird_reddy
forumpaper_5_punjabi_sengupta_bird_reddyforumpaper_5_punjabi_sengupta_bird_reddy
forumpaper_5_punjabi_sengupta_bird_reddy
Dr. Bharat Punjabi
 
The Art and Technology behind Crysis 3 (FMX 2013)
The Art and Technology behind Crysis 3 (FMX 2013)The Art and Technology behind Crysis 3 (FMX 2013)
The Art and Technology behind Crysis 3 (FMX 2013)
Tiago Sousa
 
Simplifying Massive Changes with a Live Style Guide
Simplifying Massive Changes with a Live Style GuideSimplifying Massive Changes with a Live Style Guide
Simplifying Massive Changes with a Live Style Guide
Mark Meeker
 
Rezonancija_lbozicevic
Rezonancija_lbozicevicRezonancija_lbozicevic
Rezonancija_lbozicevic
lbozicevic
 
Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009
Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009
Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009
hpduiker
 
Monitoring & evaluating the usage of your Open Access Journal
Monitoring & evaluating the usage of your Open Access JournalMonitoring & evaluating the usage of your Open Access Journal
Monitoring & evaluating the usage of your Open Access Journal
Ina Smith
 
The Best is Yet to come | #jd16at
The Best is Yet to come | #jd16at The Best is Yet to come | #jd16at
The Best is Yet to come | #jd16at
Yves Hoppe
 
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
Sue Stone
 
Ansible fest Presentation slides
Ansible fest Presentation slidesAnsible fest Presentation slides
Ansible fest Presentation slides
Aaron Carey
 
ILM - Pipeline in the cloud
ILM - Pipeline in the cloudILM - Pipeline in the cloud
ILM - Pipeline in the cloud
Aaron Carey
 

Viewers also liked (20)

Responsive Design and Joomla!
Responsive Design and Joomla!Responsive Design and Joomla!
Responsive Design and Joomla!
 
Edtc 245 presentation
Edtc 245 presentationEdtc 245 presentation
Edtc 245 presentation
 
Untitled Presentation(2)
Untitled Presentation(2)Untitled Presentation(2)
Untitled Presentation(2)
 
Richard presentation march
Richard presentation marchRichard presentation march
Richard presentation march
 
Ajax and Accessibiity
Ajax and AccessibiityAjax and Accessibiity
Ajax and Accessibiity
 
No es Verdad
No es VerdadNo es Verdad
No es Verdad
 
Halloween
HalloweenHalloween
Halloween
 
Bookstore
BookstoreBookstore
Bookstore
 
Rubi Mantilla 2do Deber
Rubi Mantilla 2do DeberRubi Mantilla 2do Deber
Rubi Mantilla 2do Deber
 
Agentziaren profesionalak publizitate prozesuan
Agentziaren profesionalak publizitate prozesuanAgentziaren profesionalak publizitate prozesuan
Agentziaren profesionalak publizitate prozesuan
 
forumpaper_5_punjabi_sengupta_bird_reddy
forumpaper_5_punjabi_sengupta_bird_reddyforumpaper_5_punjabi_sengupta_bird_reddy
forumpaper_5_punjabi_sengupta_bird_reddy
 
The Art and Technology behind Crysis 3 (FMX 2013)
The Art and Technology behind Crysis 3 (FMX 2013)The Art and Technology behind Crysis 3 (FMX 2013)
The Art and Technology behind Crysis 3 (FMX 2013)
 
Simplifying Massive Changes with a Live Style Guide
Simplifying Massive Changes with a Live Style GuideSimplifying Massive Changes with a Live Style Guide
Simplifying Massive Changes with a Live Style Guide
 
Rezonancija_lbozicevic
Rezonancija_lbozicevicRezonancija_lbozicevic
Rezonancija_lbozicevic
 
Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009
Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009
Building a pipeline to Destroy Los Angeles in 2012 - Siggraph Asia 2009
 
Monitoring & evaluating the usage of your Open Access Journal
Monitoring & evaluating the usage of your Open Access JournalMonitoring & evaluating the usage of your Open Access Journal
Monitoring & evaluating the usage of your Open Access Journal
 
The Best is Yet to come | #jd16at
The Best is Yet to come | #jd16at The Best is Yet to come | #jd16at
The Best is Yet to come | #jd16at
 
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
Torts Law A - Mid-Term Case Analysis Assignment (Distinction)
 
Ansible fest Presentation slides
Ansible fest Presentation slidesAnsible fest Presentation slides
Ansible fest Presentation slides
 
ILM - Pipeline in the cloud
ILM - Pipeline in the cloudILM - Pipeline in the cloud
ILM - Pipeline in the cloud
 

Similar to JDay Deutschland 2015 - PHP Design Patterns in Joomla!

Viking academy backbone.js
Viking academy  backbone.jsViking academy  backbone.js
Viking academy backbone.js
Bert Wijnants
 
PHP MVC
PHP MVCPHP MVC
Backbone Basics with Examples
Backbone Basics with ExamplesBackbone Basics with Examples
Backbone Basics with Examples
Sergey Bolshchikov
 
Drupal 8: Theming
Drupal 8: ThemingDrupal 8: Theming
Drupal 8: Theming
drubb
 
Drupal 7 Theming - Behind the scenes
Drupal 7 Theming - Behind the scenes Drupal 7 Theming - Behind the scenes
Drupal 7 Theming - Behind the scenes
ramakesavan
 
Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011
Ryan Price
 
Web internship Yii Framework
Web internship  Yii FrameworkWeb internship  Yii Framework
Web internship Yii Framework
Noveo
 
Patterns Are Good For Managers
Patterns Are Good For ManagersPatterns Are Good For Managers
Patterns Are Good For Managers
AgileThought
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
toddbr
 
8 things to know about theming in drupal 8
8 things to know about theming in drupal 88 things to know about theming in drupal 8
8 things to know about theming in drupal 8
Logan Farr
 
Javascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksJavascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & Tricks
Hjörtur Hilmarsson
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
Iván Fernández Perea
 
D7 theming what's new - London
D7 theming what's new - LondonD7 theming what's new - London
D7 theming what's new - London
Marek Sotak
 
Dependency Management with RequireJS
Dependency Management with RequireJSDependency Management with RequireJS
Dependency Management with RequireJS
Aaronius
 
Django design-patterns
Django design-patternsDjango design-patterns
Django design-patterns
Agiliq Info Solutions India Pvt Ltd
 
In-depth changes to Drupal 8 javascript
In-depth changes to Drupal 8 javascriptIn-depth changes to Drupal 8 javascript
In-depth changes to Drupal 8 javascript
Théodore Biadala
 
Joomlapresentation
JoomlapresentationJoomlapresentation
Joomlapresentation
guestf44ffc
 
JoomlaEXPO Presentation by Joe LeBlanc
JoomlaEXPO Presentation by Joe LeBlancJoomlaEXPO Presentation by Joe LeBlanc
JoomlaEXPO Presentation by Joe LeBlanc
John Coonen
 
Joomlapresentation
JoomlapresentationJoomlapresentation
Joomlapresentation
jlleblanc
 
Javascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsJavascript frameworks: Backbone.js
Javascript frameworks: Backbone.js
Soós Gábor
 

Similar to JDay Deutschland 2015 - PHP Design Patterns in Joomla! (20)

Viking academy backbone.js
Viking academy  backbone.jsViking academy  backbone.js
Viking academy backbone.js
 
PHP MVC
PHP MVCPHP MVC
PHP MVC
 
Backbone Basics with Examples
Backbone Basics with ExamplesBackbone Basics with Examples
Backbone Basics with Examples
 
Drupal 8: Theming
Drupal 8: ThemingDrupal 8: Theming
Drupal 8: Theming
 
Drupal 7 Theming - Behind the scenes
Drupal 7 Theming - Behind the scenes Drupal 7 Theming - Behind the scenes
Drupal 7 Theming - Behind the scenes
 
Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011Drupal Theme Development - DrupalCon Chicago 2011
Drupal Theme Development - DrupalCon Chicago 2011
 
Web internship Yii Framework
Web internship  Yii FrameworkWeb internship  Yii Framework
Web internship Yii Framework
 
Patterns Are Good For Managers
Patterns Are Good For ManagersPatterns Are Good For Managers
Patterns Are Good For Managers
 
Javascript first-class citizenery
Javascript first-class citizeneryJavascript first-class citizenery
Javascript first-class citizenery
 
8 things to know about theming in drupal 8
8 things to know about theming in drupal 88 things to know about theming in drupal 8
8 things to know about theming in drupal 8
 
Javascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & TricksJavascript MVC & Backbone Tips & Tricks
Javascript MVC & Backbone Tips & Tricks
 
Javascript Design Patterns
Javascript Design PatternsJavascript Design Patterns
Javascript Design Patterns
 
D7 theming what's new - London
D7 theming what's new - LondonD7 theming what's new - London
D7 theming what's new - London
 
Dependency Management with RequireJS
Dependency Management with RequireJSDependency Management with RequireJS
Dependency Management with RequireJS
 
Django design-patterns
Django design-patternsDjango design-patterns
Django design-patterns
 
In-depth changes to Drupal 8 javascript
In-depth changes to Drupal 8 javascriptIn-depth changes to Drupal 8 javascript
In-depth changes to Drupal 8 javascript
 
Joomlapresentation
JoomlapresentationJoomlapresentation
Joomlapresentation
 
JoomlaEXPO Presentation by Joe LeBlanc
JoomlaEXPO Presentation by Joe LeBlancJoomlaEXPO Presentation by Joe LeBlanc
JoomlaEXPO Presentation by Joe LeBlanc
 
Joomlapresentation
JoomlapresentationJoomlapresentation
Joomlapresentation
 
Javascript frameworks: Backbone.js
Javascript frameworks: Backbone.jsJavascript frameworks: Backbone.js
Javascript frameworks: Backbone.js
 

Recently uploaded

Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
mz5nrf0n
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
Grant Fritchey
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Łukasz Chruściel
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
SOCRadar
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
Green Software Development
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
rodomar2
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
lorraineandreiamcidl
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
Patrick Weigel
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
ToXSL Technologies
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
Octavian Nadolu
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
Peter Muessig
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
TaghreedAltamimi
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
Green Software Development
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
Philip Schwarz
 

Recently uploaded (20)

Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
原版定制美国纽约州立大学奥尔巴尼分校毕业证学位证书原版一模一样
 
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit ParisNeo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
Neo4j - Product Vision and Knowledge Graphs - GraphSummit Paris
 
Using Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query PerformanceUsing Query Store in Azure PostgreSQL to Understand Query Performance
Using Query Store in Azure PostgreSQL to Understand Query Performance
 
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️Need for Speed: Removing speed bumps from your Symfony projects ⚡️
Need for Speed: Removing speed bumps from your Symfony projects ⚡️
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 
socradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdfsocradar-q1-2024-aviation-industry-report.pdf
socradar-q1-2024-aviation-industry-report.pdf
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
GreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-JurisicGreenCode-A-VSCode-Plugin--Dario-Jurisic
GreenCode-A-VSCode-Plugin--Dario-Jurisic
 
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CDKuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
KuberTENes Birthday Bash Guadalajara - Introducción a Argo CD
 
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOMLORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
LORRAINE ANDREI_LEQUIGAN_HOW TO USE ZOOM
 
WWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders AustinWWDC 2024 Keynote Review: For CocoaCoders Austin
WWDC 2024 Keynote Review: For CocoaCoders Austin
 
How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?How Can Hiring A Mobile App Development Company Help Your Business Grow?
How Can Hiring A Mobile App Development Company Help Your Business Grow?
 
Artificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension FunctionsArtificia Intellicence and XPath Extension Functions
Artificia Intellicence and XPath Extension Functions
 
UI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design SystemUI5con 2024 - Bring Your Own Design System
UI5con 2024 - Bring Your Own Design System
 
Lecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptxLecture 2 - software testing SE 412.pptx
Lecture 2 - software testing SE 412.pptx
 
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, FactsALGIT - Assembly Line for Green IT - Numbers, Data, Facts
ALGIT - Assembly Line for Green IT - Numbers, Data, Facts
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Hand Rolled Applicative User Validation Code Kata
Hand Rolled Applicative User ValidationCode KataHand Rolled Applicative User ValidationCode Kata
Hand Rolled Applicative User Validation Code Kata
 

JDay Deutschland 2015 - PHP Design Patterns in Joomla!