SlideShare una empresa de Scribd logo
1 de 89
Descargar para leer sin conexión
Dawn
standing on the shoulders of giants
What is Dawn

• Dependency Injection library inspired by
  Google Guice
• Notification system based on types
• Simple type safe command pattern 
Why?

• Unhappy with my options
• Small issues that have large consequences
• Flash and Flex
• Small (~12K)
• A new breed of project
What its not

• MVC, MVP ... you structure your app
• Plugin architecture
• Aiming to take over the world
Some Design Principles
• Testing is vital
• Play to language strengths
• Type safety is winfull
• Configuration is no fun (keep it DRY)
• Static state is bad
• Types are better than strings
Dependency Injection
   a lot of fuss about nothing
TheDoctor
TheDoctor


  Tardis
TheDoctor


Assistant     Tardis
TheDoctor


Assistant     Tardis    Mission
TheDoctor


IAssistant     Tardis    IMission
TheDoctor


     IAssistant        Tardis    IMission



RoseTyler
        DonnaNoble
TheDoctor


     IAssistant        Tardis         IMission



RoseTyler                        Cybermen

        DonnaNoble                          Daleks
Object graph of
 TheDoctor

                          TheDoctor


          IAssistant        Tardis         IMission



     RoseTyler                        Cybermen

             DonnaNoble                          Daleks
Creating The Doctor
•   Construct dependencies within the class

•   Service locator

•   Factories

•   DI By hand
Doing it by hand
class TheDoctor{
  public var mission:IMission;
  public var assistant:IAssistant;
  public var tardis:Tardis;
}
Doing it by hand
var doctor:TheDoctor = new TheDoctor();
Doing it by hand
var tardis:Tardis = new Tardis();
var doctor:TheDoctor = new TheDoctor();
doctor.tardis = tardis;
Doing it by hand
var assistant:IAssistant = new RoseTyler();
var tardis:Tardis = new Tardis();
var doctor:TheDoctor = new TheDoctor();
doctor.tardis = tardis;
doctor.assistant = assistant;
Doing it by hand
var mission:IMission = new Daleks();
var assistant:IAssistant = new RoseTyler();
var tardis:Tardis = new Tardis();
var doctor:TheDoctor = new TheDoctor();
doctor.tardis = tardis;
doctor.assistant = assistant;
doctor.mission = mission;
Doing it by hand
•   Thats a lot of code to create a Doctor

•   More code to maintain

•   Fragile to change

•   Client of TheDoctor must know inner workings
    (encapsulation fail)

•   Construction followed simple patterns
Dependency Injection
 is all about creating
    object graphs!
Dawn DI
•   How can object creation be automated and easy?

•   Meets design principles

•   Thank you Google Guice!
Configure the Doctor
Configure the Doctor
1. Indicate the dependencies
Configure the Doctor
1. Indicate the dependencies

2. Chose an assistant
Configure the Doctor
1. Indicate the dependencies

2. Chose an assistant

3. Chose a mission
Configure the Doctor
class TheDoctor{
  public var mission:IMission;
  public var assistant:IAssistant;
  public var tardis:Tardis;
}
Configure the Doctor
class TheDoctor{
  [Inject] public var mission:IMission;
  [Inject] public var assistant:IAssistant;
  [Inject] public var tardis:Tardis;
}
Configure the Doctor
class Config implements IConfig{
   public function create(mapper:IMapper):void{
      mapper.map(IAssistant).toClass(RoseTyler);
      mapper.map(IMission).toClass(Daleks);
   }
}
Create the Doc
var mission:IMission = new Daleks();
var assistant:IAssistant = new RoseTyler();
var tardis:Tardis = new Tardis();
var doctor:TheDoctor = new TheDoctor();
doctor.tardis = tardis;
doctor.assistant = assistant;
doctor.mission = mission;
Create the Doc
Create the Doc


builder.getObject(TheDoctor)
Create the Doc

var doctor:TheDoctor;
var builder:IBuilder = new Builder(new Config());

doctor = builder.getObject(TheDoctor) as TheDoctor;
Dawn DI
•   You write less code (no XML)

•   Configuration is ActionScript (and small)

•   Classes are compiled into final swf

•   Agile code, refactor structure fast and easily

•   Testing is easy, second nature

•   DI helps you write better code!

•   Dawn makes DI easy!
Dawn DI
•   Scopes - Singleton or Transient

•   Map toFactory/toInstance for construction control

•   Modular configuration

•   Name injections

•   Inject properties like strings or arrays

•   Optional injections

•   Inject via mutators or properties
FP-183
[Inject] Dawn DI
•   Simple

•   Light

•   Type safe

•   Test friendly

•   Terse
Notifications
decoupling without the compromise
Dawn Notifications

•   Type based

•   Closure friendly

•   Static free
The Problem
The Problem
View


View


View


View
The Problem
View


View
            Data

View


View
The Problem
View


View
            Data
            Data
View


View
The Problem
View


View
            Data
            Data
             Data
View


View
The Problem
View


View
            Data
            Data
             Data
              Data
View


View
The Problem
View


View
            Data
            Data
             Data
              Data
View


View
The Problem
View


View
            Data
            Data
             Data
              Data
View


View
The Problem
View


View
            Data
            Data
             Data
              Data
View


View
The Problem
View


View
            Data
            Data
             Data
              Data
View


View
The Problem
View


View
            Data
            Data
             Data
              Data
View


View
The Problem
View


View
            Data
            Data
             Data
              Data
View


View
The Problem
View


View
            Data
            Data
             Data
              Data
View


View
The Problem
View


View
            Data
            Data
             Data
              Data
View


View
The Problem
View


View
            Data
            Data
             Data
              Data
View


View
The Problem
       Gets a little confusing?
View


View
                 Data
                 Data
                  Data
                   Data
View


View
Decouple and Scale
Decouple and Scale
View


View


View


View
Decouple and Scale
View


View

             Data
             Data
              Data
               Data
View


View
Decouple and Scale
         Notification System
View


View

                    Data
                    Data
                     Data
                      Data
View


View
Decouple and Scale
         Notification System
View


View

                    Data
                    Data
                     Data
                      Data
View


View
Decouple and Scale
         Notification System
View


View

                    Data
                    Data
                     Data
                      Data
View


View
Type based
Type based


addEventListener(type:String,closure:Function...)
Type based


addEventListener(type:String,closure:Function...)

   addCallback(type:Class,closure:Function);
Why Types
Why Types
•   Make full use of polymorphism
    IEventType, BaseRpcEvent, com.wibble.Woo
Why Types
•   Make full use of polymorphism
    IEventType, BaseRpcEvent, com.wibble.Woo

•   Avoids meaningless statics
    FinishedBaconEvent.FINISHED_BACON
Why Types
•   Make full use of polymorphism
    IEventType, BaseRpcEvent, com.wibble.Woo

•   Avoids meaningless statics
    FinishedBaconEvent.FINISHED_BACON

•   No hidden collisions
    MyEvent.CLOSE == Event.CLOSE == FAIL
Why Types
•   Make full use of polymorphism
    IEventType, BaseRpcEvent, com.wibble.Woo

•   Avoids meaningless statics
    FinishedBaconEvent.FINISHED_BACON

•   No hidden collisions
    MyEvent.CLOSE == Event.CLOSE == FAIL

•   No switch statements
    switch( notification.getName() )
Closure unfriendly

addEventListener(Event.ADDED,
   function(event:Event):void{
       trace(“haha, Try removing me”)
   });
Closure friendly!
Closure friendly!

var listener:IListenerRegistration =
   bus.addCallback(ILogAction,
       function(note:ILogAction):void{
       }
   );
Closure friendly!

var listener:IListenerRegistration =
   bus.addCallback(ILogAction,
       function(note:ILogAction):void{
       }
   );

listener.remove();
Triggering
class TadPole{
     [Inject] public var bus:INotificationBus;

    [DependenciesInjected]
    public function init():void{
      bus.trigger(new TadPoleCreated());
    }
}
Dawn Notifications
•   Simple API

•   Use the language, closures are good!

•   Types are smarter then strings (Duh!)

•   Reduce the complexity of application structure
Commands
simple tools are easy to build with
Commands
• easy to maintain stateless goodies
• central point for lots of easy wins
 • queueing
 • cacheing
 • handle errors
 • etc etc.
Commands
• ICommand interfaces force casting
 •   execute(param:Object):void

• How to access other application objects
 •   Model.getInstance();

• Mapping Strings to Commands is fiddly
  (more developer discipline)
 •   registerCommand(Notify.GET_THING, GetThingCommand);
Dawn Commands

• Injectable
• Type safe
• Type based DRY configuration
Dawn Commands
class MakeHayCommand{
      [Inject] public var barn:Barn;


     [Execute] public function execute(note:MakeHay):void{
        barn.makeHay(note.howMuchHay);
     }
}
Dawn Commands
class MakeHayCommand{
    [Inject] public var barn:Barn;


     [Execute] public function execute(note:MakeHay):void{
       barn.makeHay(note.howMuchHay);
     }
}
Dawn Commands
class MakeHayCommand{
      [Inject] public var barn:Barn;


    [Execute] public function execute(note:MakeHay):void{
       barn.makeHay(note.howMuchHay);
    }
}
Dawn Commands
class MakeHayCommand{
      [Inject] public var barn:Barn;


     [Execute] public function execute(note:MakeHay):void{
        barn.makeHay(note.howMuchHay);
     }
}
Dawn Commands



 addCommand(MakeHayCommand);
Dawn

• Dependency Injection
• Notifications
• Commands
http://github.com/
  sammyt/dawn
Questions etc?

Más contenido relacionado

Similar a Dawn - Actionscript Library

Breaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit TestingBreaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit TestingSteven Smith
 
Mobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve MobileMobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve MobileKonstantin Loginov
 
Open Social In The Enterprise
Open Social In The EnterpriseOpen Social In The Enterprise
Open Social In The EnterpriseTim Moore
 
Java Unit Test and Coverage Introduction
Java Unit Test and Coverage IntroductionJava Unit Test and Coverage Introduction
Java Unit Test and Coverage IntroductionAlex Su
 
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver SoftwareBeyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver SoftwareChris Weldon
 
.NET Database Toolkit
.NET Database Toolkit.NET Database Toolkit
.NET Database Toolkitwlscaudill
 
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...Ambassador Labs
 
Keep it Secret, Keep it Safe - Docker Secrets and DI
Keep it Secret, Keep it Safe - Docker Secrets and DIKeep it Secret, Keep it Safe - Docker Secrets and DI
Keep it Secret, Keep it Safe - Docker Secrets and DIDana Luther
 
Introducing domain driven design - dogfood con 2018
Introducing domain driven design - dogfood con 2018Introducing domain driven design - dogfood con 2018
Introducing domain driven design - dogfood con 2018Steven Smith
 
Jailbreak Detector Detector
Jailbreak Detector DetectorJailbreak Detector Detector
Jailbreak Detector DetectorNick Mooney
 
Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Nathan Bijnens
 
Enforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean ArchitectureEnforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean ArchitectureFlorin Coros
 
Dependency Injection and Autofac
Dependency Injection and AutofacDependency Injection and Autofac
Dependency Injection and Autofacmeghantaylor
 
Rails Tips and Best Practices
Rails Tips and Best PracticesRails Tips and Best Practices
Rails Tips and Best PracticesDavid Keener
 
Breaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit TestingBreaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit TestingSteven Smith
 
DCSF19 Containerized Databases for Enterprise Applications
DCSF19 Containerized Databases for Enterprise ApplicationsDCSF19 Containerized Databases for Enterprise Applications
DCSF19 Containerized Databases for Enterprise ApplicationsDocker, Inc.
 
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...Alex Pinto
 

Similar a Dawn - Actionscript Library (20)

Breaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit TestingBreaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit Testing
 
Mobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve MobileMobile Developers Talks: Delve Mobile
Mobile Developers Talks: Delve Mobile
 
Open Social In The Enterprise
Open Social In The EnterpriseOpen Social In The Enterprise
Open Social In The Enterprise
 
Java Unit Test and Coverage Introduction
Java Unit Test and Coverage IntroductionJava Unit Test and Coverage Introduction
Java Unit Test and Coverage Introduction
 
Beyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver SoftwareBeyond TDD: Enabling Your Team to Continuously Deliver Software
Beyond TDD: Enabling Your Team to Continuously Deliver Software
 
.NET Database Toolkit
.NET Database Toolkit.NET Database Toolkit
.NET Database Toolkit
 
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
[KubeCon NA 2018] Telepresence Deep Dive Session - Rafael Schloming & Luke Sh...
 
Keep it Secret, Keep it Safe - Docker Secrets and DI
Keep it Secret, Keep it Safe - Docker Secrets and DIKeep it Secret, Keep it Safe - Docker Secrets and DI
Keep it Secret, Keep it Safe - Docker Secrets and DI
 
Introducing domain driven design - dogfood con 2018
Introducing domain driven design - dogfood con 2018Introducing domain driven design - dogfood con 2018
Introducing domain driven design - dogfood con 2018
 
Jailbreak Detector Detector
Jailbreak Detector DetectorJailbreak Detector Detector
Jailbreak Detector Detector
 
Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013Microsoft Big Data @ SQLUG 2013
Microsoft Big Data @ SQLUG 2013
 
Enforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean ArchitectureEnforce Consistentcy with Clean Architecture
Enforce Consistentcy with Clean Architecture
 
Dependency Injection and Autofac
Dependency Injection and AutofacDependency Injection and Autofac
Dependency Injection and Autofac
 
Rails Tips and Best Practices
Rails Tips and Best PracticesRails Tips and Best Practices
Rails Tips and Best Practices
 
Breaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit TestingBreaking Dependencies to Allow Unit Testing
Breaking Dependencies to Allow Unit Testing
 
Dao example
Dao exampleDao example
Dao example
 
DCSF19 Containerized Databases for Enterprise Applications
DCSF19 Containerized Databases for Enterprise ApplicationsDCSF19 Containerized Databases for Enterprise Applications
DCSF19 Containerized Databases for Enterprise Applications
 
Coding Naked 2023
Coding Naked 2023Coding Naked 2023
Coding Naked 2023
 
Introduction to threat_modeling
Introduction to threat_modelingIntroduction to threat_modeling
Introduction to threat_modeling
 
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...
Secure Because Math: A Deep-Dive on Machine Learning-Based Monitoring (#Secur...
 

Último

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 

Último (20)

[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 

Dawn - Actionscript Library