SlideShare a Scribd company logo
1 of 67
I love my




http://www.flickr.com/photos/slushpup/3055613967/
Dennis Benkert
  Software Developer
      Coaching
      Coding
      Consulting
Things Your Mother Didn’t Tell
You About Bundle Configurations
app/config.yml
parameters:
    global.page_size:            10
    gloabl.page_num:             5
    global.tracking.key:         ASFDIPSADPFIHwer234123QSD

       # Various configuration
       webservices.timeout:      100
       content_check.enabled:    true
       birthdates.start:         1950 # TODO: Delete after release
       logging.registrations:    true

       # Tracking Bundle Configuration
       trackingbundle.user:               rebum
       trackingbundle.api.version:        1_0
       trackingbundle.use_ssl:            true    # Do not touch this!!!
       trackingbundle.track_super_users: false
       infobundle.god_mode:               true # Ticket 123456234
       infobundle.level:                  42
       # Connection data for some service
       some_webservice.url:
       some_webservice.user:
                                               This file was much
                                          http://example.com
                                          api
       some_webservice.key:               Sdfihwef $5sdf” SAFAWEF
       some_webservice.ssl:               true  loooooonger…
       # More configuration
       more.config:               100
       even.more.config:          true
       oh_my_option:              123
       foo.bar.baz:               true
       application.lock_user:     super
       misc.timeout:              300
       http.meta.title:           super page
       http.meta.keywords:
           - some
           - keywords
           - for
           - this
           - page
        http.description:         Some crazy description for the homepage that we all love so much

#...
app/config.yml
parameters:
    global.page_size: in
                  All      one context
                              10
    gloabl.page_num:          5
    global.tracking.key:      ASFDIPSADPFIHwer234123QSD

    # Various configuration                 Correct type?
    webservices.timeout:      '100'
    content_check.enabled:    true
    birthdates.start:         1950 # TODO: Delete after release
    logging.registrations:    true

    # Tracking Bundle Configuration
    trackingbundle.user:              rebum Only this bundle?!
    trackingbundle.api.version:       1_0
    trackingbundle.use_ssl:           true     # Do not touch this!!!
    trackingbundle.track_super_users: false
    infobundle.god_mode:              true # Ticket 123456234
    infobundle.levl:                  42
    # Connection data for some service
    some_webservice.url:              http://example.com
    some_webservice.user:             api Multiple connections?!
         Correct key?!
    some_webservice.key:               Sdfihwef $5sdf” SAFAWEF
    some_webservice.ssl:              true
app/config.yml
my_project_tracking:
    user:                   rebum
    api_version:            1_0
    use_ssl:                true    # Do not touch this!!!
    track_super_users:      false

my_project_info:
    god_mode:              More structure 123456234
                            true  # Ticket
    level:                  42

my_project_ webservice:
    connection:
        url:                http://example.com
        user:               api
        key:                Sdfihwef $5sdf” SAFAWEF
        ssl:                'true'
                                         Correct type?!!11one
parameters:
    global.page_size:       10
    gloabl.page_num:        5
    global.tracking.key:    ASFDIPSADPFIHwer234123QSD

    # ...
Bad configuration
   Worse than bad code
     (In terms of structure)
Bad validation
    Even worse
feature_x_bundle.redirct:   302


           Correct key?!
Config Component




    http://www.flickr.com/photos/capcase/2735500813/
Cache               Locate

           Config
Validate            Load
Cache               Locate

           Config
Validate            Load
Locate & Load




      http://www.flickr.com/photos/onthespiral/3406281939/
use SymfonyComponentConfigFileLocator;

$locator = new FileLocator(
    __DIR__.'/../Resources/config'
);
        Path(s) of resources
Available in path(s)?


$locator->locate('config.xml');
src/YourBundle/DependencyInjection/YourBundleExtension.php
             Special Loader for DIC
use SymfonyComponentDependencyInjectionLoader;

$loader = new LoaderXmlFileLoader(
    $container,
    new FileLocator('...')
);
                        Path(s) of resources
Load configuration in DIC


$loader->load('services.xml');


                Your services
$loader->load('services.xml');
$loader->load('other_services.xml');
Cache               Locate

           Config
Validate            Load
Validate




http://www.flickr.com/photos/jeremybrooks/3214838875/
Your bundle context
app/config.yml

your_bundle:
    enabled: true
src/YourBundle/DependencyInjection/YourBundleExtension.php

public function load($configs, /*...*/)
{
     $config = $this unprocessed
            Matched and
         ->processConfiguration(/**/);

       if (true === $config['enabled']) {
            $loader->load('services.xml');
       }            Processed and validated
}
your_bundle:
    enabled: true


               Validate
               Convert

array('enabled' => true);
Build a Config Tree




          http://www.flickr.com/photos/jlscha/6226656013/
src/YourBundle/DependencyInjection/Configuration.php

public function getConfigTreeBuilder()
{           The config tree
    $treeBuilder = new TreeBuilder();
    $rootNode = $treeBuilder
        ->root('your_bundle');

       // tree definition ...
             Your root node

       return $treeBuilder;
}
your_bundle:
    enabled: true
$rootNode Node type           Node name
     ->children()
          ->booleanNode('enabled')
                ->defaultFalse()
          ->end()
     ->end()     More options
;
src/YourBundle/DependencyInjection/YourBundleExtension.php
                      Correct type
public function load($configs, /*...*/)
{
     if (true === $config['enabled']) {
         // ...
     }
}
Scalar

Boolean            Array


          Node
Scalar

Boolean            Array


          Node
->booleanNode('enabled')->end()
your_bundle:
    enabled: troo
Type validation
Scalar

Boolean            Array


          Node
your_bundle:
    timeout: 60
All scalar types


->scalarNode('timeout')
     ->defaultValue(3600)
     ->isRequired()
     ->cannotBeEmpty()
->end()
              Validation options
your_bundle:
    timeout: sixty seconds
->scalarNode('timeout')
        Custom validation
     // ...                      Validation logic
     ->validate()
          ->ifTrue(function ($v) {
                return !is_int($v);
          })
          ->thenInvalid('No integer')
     ->end()
->end()                   Custom error
Custom error
Scalar

Boolean            Array


          Node
connection:
    url: http://example.com
    user: api
    key: $ome35ecre7Ke$
Group of nodes

->arrayNode('connection')
    ->children()
        ->scalarNode('url')
            ->isRequired()
                              Specific validation
        ->end()
        ->scalarNode('user')->end()
        ->scalarNode('key')->end()
    ->end()
->end()
array('connection' =>
    array(
        'url' => 'http://example.com',
        'user' => 'api',
        'key' => '$ome35ecre7Ke$'
    )
);
connections:
     default:
          url:    http://example.com
          user:   api
          key:    $ome35ecre7Ke$
     fallback:
          url:    http://back.example.com
          user:   fallback_api
          key:    $ome35ecre7Ke$
->arrayNode('connections')
Prototype variations
    ->useAttributeAsKey('name')
    ->prototype('array')
        ->children()
              ->scalarNode('url')
                  ->isRequired()
              ->end()
              ->scalarNode('user')->end()
              ->scalarNode('key')->end()
        ->end() validation
        Prototype
    ->end()
    ->requiresAtLeastOneElement()
->end()
array (
    'connections' => array (
        'default' => array (
            'url' => '...',
            'user' => 'api',
            'key' => '$ome35ecre7Ke$'
        ),
        'fallback' => array (
            'url' => '...',
            'user' => 'fallback_api',
            'key' => '$ome35ecre7Ke$'
        )
));
Using Configuration




     http://www.flickr.com/photos/victornuno/222145881/
src/YourBundle/DependencyInjection/YourBundleExtension.php

public function load(/*...*/)
{               Load services
     if (true === $config['enabled']) {
          $loader->load('services.xml');
     }
}
src/YourBundle/DependencyInjection/YourBundleExtension.php

public function load(/*...*/)
{
    if (true === $config['enabled']) {
        $loader->load('services.xml');
    }            Split services

     if (true === $config['add_extras']) {
         $loader->load('extras.xml');
     }
}
Manipulate DIC
src/YourBundle/DependencyInjection/YourBundleExtension.php

$container->setParameter(
    'your_bundle.timeout',
    $config['timeout']
);
src/YourBundle/Controller/YourController.php

public function someAction(/*...*/)
{
    $timeout = $container->getParameter(
        'global.timeout');
}
sfConfig::get('global.timeout');



           Good old symfony times…
Configure Services

     Not global options
src/YourBundle/DependencyInjection/YourBundleExtension.php

$container->setParameter(
    'your_bundle.timeout',
    $config['timeout']
);
src/YourBundle/Resources/config/services.xml
<?xml version="1.0" ?>       You config option
<container>
    <parameters>
        <parameter key="your_service_x.timeout"></parameter>
    </parameters>

    <services>
        <service id="your_service_x">
             <argument>%your_service_x.timeout%</argument>
        </service>
    </services>
</container>
src/YourBundle/DependencyInjection/YourBundleExtension.php

$container->setParameter(
    'your_service_x.timeout',
    $config['timeout']
);
Let‘s recap




http://www.flickr.com/photos/tine72/5464869042/
Configuration
needs structure
Configuration
needs validation
Configuration
needs conversion
http://joind.in/7209

More Related Content

What's hot

Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)
Kris Wallsmith
 
Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)
Fabien Potencier
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worlds
Ignacio Martín
 
The symfony platform: Create your very own framework (PHP Quebec 2008)
The symfony platform: Create your very own framework (PHP Quebec 2008)The symfony platform: Create your very own framework (PHP Quebec 2008)
The symfony platform: Create your very own framework (PHP Quebec 2008)
Fabien Potencier
 

What's hot (20)

CodeIgniter 3.0
CodeIgniter 3.0CodeIgniter 3.0
CodeIgniter 3.0
 
Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)Introducing Assetic (NYPHP)
Introducing Assetic (NYPHP)
 
Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3Django - 次の一歩 gumiStudy#3
Django - 次の一歩 gumiStudy#3
 
Symfony without the framework
Symfony without the frameworkSymfony without the framework
Symfony without the framework
 
How Kris Writes Symfony Apps
How Kris Writes Symfony AppsHow Kris Writes Symfony Apps
How Kris Writes Symfony Apps
 
Symfony tips and tricks
Symfony tips and tricksSymfony tips and tricks
Symfony tips and tricks
 
Guard Authentication: Powerful, Beautiful Security
Guard Authentication: Powerful, Beautiful SecurityGuard Authentication: Powerful, Beautiful Security
Guard Authentication: Powerful, Beautiful Security
 
Mashing up JavaScript – Advanced Techniques for modern Web Apps
Mashing up JavaScript – Advanced Techniques for modern Web AppsMashing up JavaScript – Advanced Techniques for modern Web Apps
Mashing up JavaScript – Advanced Techniques for modern Web Apps
 
Assetic (Symfony Live Paris)
Assetic (Symfony Live Paris)Assetic (Symfony Live Paris)
Assetic (Symfony Live Paris)
 
Silex Cheat Sheet
Silex Cheat SheetSilex Cheat Sheet
Silex Cheat Sheet
 
Fatc
FatcFatc
Fatc
 
Mashing up JavaScript
Mashing up JavaScriptMashing up JavaScript
Mashing up JavaScript
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ Etsy
 
Moving from Django Apps to Services
Moving from Django Apps to ServicesMoving from Django Apps to Services
Moving from Django Apps to Services
 
Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)Beyond symfony 1.2 (Symfony Camp 2008)
Beyond symfony 1.2 (Symfony Camp 2008)
 
Symfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worldsSymfony & Javascript. Combining the best of two worlds
Symfony & Javascript. Combining the best of two worlds
 
Web::Machine - Simpl{e,y} HTTP
Web::Machine - Simpl{e,y} HTTPWeb::Machine - Simpl{e,y} HTTP
Web::Machine - Simpl{e,y} HTTP
 
With a Mighty Hammer
With a Mighty HammerWith a Mighty Hammer
With a Mighty Hammer
 
Building Cloud Castles
Building Cloud CastlesBuilding Cloud Castles
Building Cloud Castles
 
The symfony platform: Create your very own framework (PHP Quebec 2008)
The symfony platform: Create your very own framework (PHP Quebec 2008)The symfony platform: Create your very own framework (PHP Quebec 2008)
The symfony platform: Create your very own framework (PHP Quebec 2008)
 

Viewers also liked

Viewers also liked (8)

Cologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - VarnishCologne Web Performance Optimization Group Web - Varnish
Cologne Web Performance Optimization Group Web - Varnish
 
symfony live 2010 - Using symfony events to create clean class interfaces
symfony live 2010 - Using symfony events to create clean class interfacessymfony live 2010 - Using symfony events to create clean class interfaces
symfony live 2010 - Using symfony events to create clean class interfaces
 
Microservices Docker @Bonn Agile
Microservices Docker @Bonn AgileMicroservices Docker @Bonn Agile
Microservices Docker @Bonn Agile
 
Giant Swarm @Devhouse friday
Giant Swarm @Devhouse fridayGiant Swarm @Devhouse friday
Giant Swarm @Devhouse friday
 
Container Orchestration @Docker Meetup Hamburg
Container Orchestration @Docker Meetup HamburgContainer Orchestration @Docker Meetup Hamburg
Container Orchestration @Docker Meetup Hamburg
 
Introduction to Docker & CoreOS - Symfony User Group Cologne
Introduction to Docker & CoreOS - Symfony User Group CologneIntroduction to Docker & CoreOS - Symfony User Group Cologne
Introduction to Docker & CoreOS - Symfony User Group Cologne
 
CoreOS @Codetalks Hamburg
CoreOS @Codetalks HamburgCoreOS @Codetalks Hamburg
CoreOS @Codetalks Hamburg
 
Dockerizing Symfony Applications - Symfony Live Berlin 2014
Dockerizing Symfony Applications - Symfony Live Berlin 2014Dockerizing Symfony Applications - Symfony Live Berlin 2014
Dockerizing Symfony Applications - Symfony Live Berlin 2014
 

Similar to Things Your Mother Didnt Tell You About Bundle Configurations - Symfony Live…

What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012
D
 
Puppet atbazaarvoice
Puppet atbazaarvoicePuppet atbazaarvoice
Puppet atbazaarvoice
Dave Barcelo
 
20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev
Frank Rousseau
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friends
Michael Peacock
 
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as CodePuppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet
 
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro frameworkKeeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro framework
Jeremy Kendall
 

Similar to Things Your Mother Didnt Tell You About Bundle Configurations - Symfony Live… (20)

What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012What mom never told you about bundle configurations - Symfony Live Paris 2012
What mom never told you about bundle configurations - Symfony Live Paris 2012
 
20160905 - BrisJS - nightwatch testing
20160905 - BrisJS - nightwatch testing20160905 - BrisJS - nightwatch testing
20160905 - BrisJS - nightwatch testing
 
Service discovery and configuration provisioning
Service discovery and configuration provisioningService discovery and configuration provisioning
Service discovery and configuration provisioning
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
Perl web app 테스트전략
Perl web app 테스트전략Perl web app 테스트전략
Perl web app 테스트전략
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
 
Puppet atbazaarvoice
Puppet atbazaarvoicePuppet atbazaarvoice
Puppet atbazaarvoice
 
20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev20130528 solution linux_frousseau_nopain_webdev
20130528 solution linux_frousseau_nopain_webdev
 
Phpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friendsPhpne august-2012-symfony-components-friends
Phpne august-2012-symfony-components-friends
 
Apostrophe (improved Paris edition)
Apostrophe (improved Paris edition)Apostrophe (improved Paris edition)
Apostrophe (improved Paris edition)
 
What's New In Laravel 5
What's New In Laravel 5What's New In Laravel 5
What's New In Laravel 5
 
Drupal as a web framework
Drupal as a web frameworkDrupal as a web framework
Drupal as a web framework
 
Zend Framework Study@Tokyo #2
Zend Framework Study@Tokyo #2Zend Framework Study@Tokyo #2
Zend Framework Study@Tokyo #2
 
Future of Web Apps: Google Gears
Future of Web Apps: Google GearsFuture of Web Apps: Google Gears
Future of Web Apps: Google Gears
 
ACL in CodeIgniter
ACL in CodeIgniterACL in CodeIgniter
ACL in CodeIgniter
 
CodeIgniter PHP MVC Framework
CodeIgniter PHP MVC FrameworkCodeIgniter PHP MVC Framework
CodeIgniter PHP MVC Framework
 
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as CodePuppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
Puppet Camp Seattle 2014: Puppet: Cloud Infrastructure as Code
 
Keeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro frameworkKeeping it small: Getting to know the Slim micro framework
Keeping it small: Getting to know the Slim micro framework
 
Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8Unit testing after Zend Framework 1.8
Unit testing after Zend Framework 1.8
 
Keeping It Small with Slim
Keeping It Small with SlimKeeping It Small with Slim
Keeping It Small with Slim
 

More from D

The Dog Ate My Deployment - PHP Uncoference September 2013
The Dog Ate My Deployment - PHP Uncoference September 2013The Dog Ate My Deployment - PHP Uncoference September 2013
The Dog Ate My Deployment - PHP Uncoference September 2013
D
 
The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
D
 
Dennis Benkert - The Dog Ate My Deployment - Symfony Usergroup Berlin March ...
Dennis Benkert -  The Dog Ate My Deployment - Symfony Usergroup Berlin March ...Dennis Benkert -  The Dog Ate My Deployment - Symfony Usergroup Berlin March ...
Dennis Benkert - The Dog Ate My Deployment - Symfony Usergroup Berlin March ...
D
 
Things Your Mother Didn't Tell You About Bundle Configurations - Symfony Live...
Things Your Mother Didn't Tell You About Bundle Configurations - Symfony Live...Things Your Mother Didn't Tell You About Bundle Configurations - Symfony Live...
Things Your Mother Didn't Tell You About Bundle Configurations - Symfony Live...
D
 
symfony Live 2010 - Using Doctrine Migrations
symfony Live 2010 -  Using Doctrine Migrationssymfony Live 2010 -  Using Doctrine Migrations
symfony Live 2010 - Using Doctrine Migrations
D
 
Railslove Lightningtalk 20 02 09 - Web Debug Toolbars
Railslove Lightningtalk 20 02 09 - Web Debug ToolbarsRailslove Lightningtalk 20 02 09 - Web Debug Toolbars
Railslove Lightningtalk 20 02 09 - Web Debug Toolbars
D
 

More from D (9)

Monitoring und Metriken im Wunderland
Monitoring und Metriken im WunderlandMonitoring und Metriken im Wunderland
Monitoring und Metriken im Wunderland
 
The Dog Ate My Deployment - PHP Uncoference September 2013
The Dog Ate My Deployment - PHP Uncoference September 2013The Dog Ate My Deployment - PHP Uncoference September 2013
The Dog Ate My Deployment - PHP Uncoference September 2013
 
The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
The Dog Ate My Deployment - Symfony Usergroup Cologne July 2013
 
Dennis Benkert - The Dog Ate My Deployment - Symfony Usergroup Berlin March ...
Dennis Benkert -  The Dog Ate My Deployment - Symfony Usergroup Berlin March ...Dennis Benkert -  The Dog Ate My Deployment - Symfony Usergroup Berlin March ...
Dennis Benkert - The Dog Ate My Deployment - Symfony Usergroup Berlin March ...
 
Things Your Mother Didn't Tell You About Bundle Configurations - Symfony Live...
Things Your Mother Didn't Tell You About Bundle Configurations - Symfony Live...Things Your Mother Didn't Tell You About Bundle Configurations - Symfony Live...
Things Your Mother Didn't Tell You About Bundle Configurations - Symfony Live...
 
symfony Live 2010 - Using Doctrine Migrations
symfony Live 2010 -  Using Doctrine Migrationssymfony Live 2010 -  Using Doctrine Migrations
symfony Live 2010 - Using Doctrine Migrations
 
symfony and immobilienscout24.de - Dennis Benkert
symfony and immobilienscout24.de - Dennis Benkertsymfony and immobilienscout24.de - Dennis Benkert
symfony and immobilienscout24.de - Dennis Benkert
 
symfony and immobilienscout24.de - Rob Bors
symfony and immobilienscout24.de - Rob Borssymfony and immobilienscout24.de - Rob Bors
symfony and immobilienscout24.de - Rob Bors
 
Railslove Lightningtalk 20 02 09 - Web Debug Toolbars
Railslove Lightningtalk 20 02 09 - Web Debug ToolbarsRailslove Lightningtalk 20 02 09 - Web Debug Toolbars
Railslove Lightningtalk 20 02 09 - Web Debug Toolbars
 

Recently uploaded

Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
UXDXConf
 

Recently uploaded (20)

PLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. StartupsPLAI - Acceleration Program for Generative A.I. Startups
PLAI - Acceleration Program for Generative A.I. Startups
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Structuring Teams and Portfolios for Success
Structuring Teams and Portfolios for SuccessStructuring Teams and Portfolios for Success
Structuring Teams and Portfolios for Success
 
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
FDO for Camera, Sensor and Networking Device – Commercial Solutions from VinC...
 
Optimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through ObservabilityOptimizing NoSQL Performance Through Observability
Optimizing NoSQL Performance Through Observability
 
Demystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John StaveleyDemystifying gRPC in .Net by John Staveley
Demystifying gRPC in .Net by John Staveley
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
Behind the Scenes From the Manager's Chair: Decoding the Secrets of Successfu...
 
Syngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdfSyngulon - Selection technology May 2024.pdf
Syngulon - Selection technology May 2024.pdf
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptxUnpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
Unpacking Value Delivery - Agile Oxford Meetup - May 2024.pptx
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdfThe Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
The Value of Certifying Products for FDO _ Paul at FIDO Alliance.pdf
 
Designing for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at ComcastDesigning for Hardware Accessibility at Comcast
Designing for Hardware Accessibility at Comcast
 
UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2UiPath Test Automation using UiPath Test Suite series, part 2
UiPath Test Automation using UiPath Test Suite series, part 2
 
Agentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdfAgentic RAG What it is its types applications and implementation.pdf
Agentic RAG What it is its types applications and implementation.pdf
 
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi IbrahimzadeFree and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
Free and Effective: Making Flows Publicly Accessible, Yumi Ibrahimzade
 
UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1UiPath Test Automation using UiPath Test Suite series, part 1
UiPath Test Automation using UiPath Test Suite series, part 1
 

Things Your Mother Didnt Tell You About Bundle Configurations - Symfony Live…