SlideShare ist ein Scribd-Unternehmen logo
1 von 47
Downloaden Sie, um offline zu lesen
doit – automation tool



   Bringing the power of build-tools to
        execute any kind of task


Eduardo Schettino




                    doit - automation tool   1
About me

   Brazil
   Beijing – China
   Exoweb http://www.exoweb.net




                       doit - automation tool   2
Talk overview

   build-tools (make)
   Who needs a build-tool?
   doit
   Questions & Answers




                         doit - automation tool   3
build-tools

Anything worth repeating is worth automating
   manage repetitive tasks and their dependencies
   speed-up development (faster turn-around)
   1977: Make (C & other compiled languages)




                     doit - automation tool      4
make model


                                Rules
Prerequisite 1




Prerequisite 2    Commands                   Targets
      ...




Prerequisite N


                    doit - automation tool             5
C project

  foo.c
          compile         foo.o

                                              link   foobar
defs.h

          compile         bar.o
  bar.c




                     doit - automation tool                   6
1 - compile foo

  foo.c
          compile        foo.o

                                             link   foobar
defs.h

          compile        bar.o
  bar.c




                    doit - automation tool                   7
2 - compile bar

  foo.c
          compile        foo.o

                                             link   foobar
defs.h

          compile        bar.o
  bar.c




                    doit - automation tool                   8
3 - foobar

  foo.c
          compile          foo.o

                                               link   foobar
defs.h

          compile          bar.o
  bar.c




                      doit - automation tool                   9
initial build

  foo.c
          compile           foo.o

                                                link   foobar
defs.h

          compile           bar.o
  bar.c


  All 3 operations executed




                       doit - automation tool                   10
no-op rebuild

  foo.c
          compile           foo.o

                                                link   foobar
defs.h

          compile           bar.o
  bar.c


No changes. No operation executed




                       doit - automation tool                   11
incremental rebuild

  foo.c
          compile        foo.o

                                             link   foobar
defs.h

          compile        bar.o
  bar.c


foo.c changed. 2 operations executed




                    doit - automation tool                   12
how it works?

   file time-stamp comparison
   if any of the prerequisite files were modified
    after last modification on target => re-execute
   if target is up-to-date => skip execution




                       doit - automation tool         13
who needs a build-tool?

   dynamic language => no compilation => static
    checkers + unit-tests
   functional tests (DB + web) are slow
   maintenance tasks




                      doit - automation tool       14
python project

foo.py                 unit-test


   main.py                 unit-test


bar.py                 unit-test




             doit - automation tool    15
first run

foo.py                 unit-test


   main.py                 unit-test


bar.py                 unit-test




             doit - automation tool    16
no-op run???

             foo.py                 unit-test


                main.py                 unit-test


             bar.py                 unit-test


 no modifications on source code
 all tests are executed again!

 no targets to compare time-stamps...




                          doit - automation tool    17
make problems

   ad-hoc language (hard to use, debug, ...)
   time-stamp based (fragile)
   restricted to operations that create files
   not good on dynamic creation of rules




                       doit - automation tool    18
doit goals

   more flexible model than traditional build-tools
   “real” language => python
   get out of your way




                       doit - automation tool          19
doit model

   based on “Tasks”, focus on “actions”
                                  Tasks
    dependency 1




    dependency 2     Actions                   Targets
         ...




    dependency N


                      doit - automation tool             20
how it works?

   same principle but...
   use a “db” file to save info from successful
    execution
   tasks are defined on a “dodo” file, a plain
    python module
   i.e. does not require targets to check if task is
    up-to-date



                       doit - automation tool           21
Hello World


def task_hello():



    return {'actions': 
       ['echo Hello World > hello.txt']}




                    doit - automation tool   22
Hello World

             A task generator ...
def task_hello():




    return {'actions': 
        ['echo Hello World > hello.txt']}




                    doit - automation tool   23
Hello World

               A task generator ...
def task_hello():

        ... returns a dictionary with task meta-data

    return {'actions': 
        ['echo Hello World > hello.txt']}




                     doit - automation tool        24
Hello World

               A task generator ...
def task_hello():

        ... returns a dictionary with task meta-data

    return {'actions': 
        ['echo Hello World > hello.txt']}


                    strings are shell commands

                     doit - automation tool        25
python actions

         a plain python function

def pyhello():
    with open('hello.txt', 'w') as hello_file:
        hello_file.write("Hello Pythonn")



def task_hello():
    return {'actions': [(pyhello,)]}



                   doit - automation tool   26
python actions

         a plain python function

def pyhello():
    with open('hello.txt', 'w') as hello_file:
        hello_file.write("Hello Pythonn")

                  tuple (callable, args, kwargs)
def task_hello():
    return {'actions': [(pyhello,)]}



                   doit - automation tool          27
compile


def task_compile():
    return {'actions': ["cc ­c main.c"],
            'file_dep': ["main.c","defs.h"],
            'targets': ["main.o"]
            }

 dependencies                             targets



                 doit - automation tool             28
sub-tasks

       define task meta-data
def task_create_file():
    for i in range(3):
        filename = "file%d.txt" % i


        yield {'name': filename,
               'actions': 
                 ["touch %s" % filename]}



                  doit - automation tool    29
sub-tasks

       define task meta-data
def task_create_file():
    for i in range(3):
        filename = "file%d.txt" % i


        yield {'name': filename,
               'actions': 
                 ["touch %s" % filename]}

          “yield” to create multiple tasks

                  doit - automation tool     30
sub-tasks

       define task meta-data
def task_create_file():
    for i in range(3):
        filename = "file%d.txt" % i

                               required for sub-tasks
        yield {'name': filename,
               'actions': 
                 ["touch %s" % filename]}

          “yield” to create multiple tasks

                  doit - automation tool                31
sub-tasks

       define task meta-data
def task_create_file():
    for i in range(3):
        filename = "file%d.txt" % i

                               required for sub-tasks
        yield {'name': filename,
               'actions': 
                 ["touch %s" % filename]}

          “yield” to create multiple tasks

                  doit - automation tool                32
task dependency
def task_foo():
    return {'actions': ["echo foo"]}
def task_bar():
    return {'actions': ["echo bar"]}

def task_mygroup():
    return {'actions': None,
            'task_dep': ['foo', 'bar']}

 tasks that must be executed before this task


                  doit - automation tool        33
result dependency
def task_which_version():
   return {'actions': 
 ['bzr version­info ­­custom –template="{revno}n"']}



def task_do_something():
   return {'actions': ['echo "TODO: send an email"'],
           'result_dep': ['which_version']}

  check result from another task instead of a file content




                        doit - automation tool           34
result dependency
def task_which_version():
   return {'actions': 
 ['bzr version­info ­­custom –template="{revno}n"']}

      task “result” is string returned by action
def task_do_something():
   return {'actions': ['echo "TODO: send an email"'],
           'result_dep': ['which_version']}

  check result from another task instead of a file content




                        doit - automation tool           35
execution

    DOIT_CONFIG = {'default_tasks': ['t3']}

   by default all tasks are executed
   controlled by DOIT_CONFIG default_tasks
$ doit
.  task3
$ doit task2 task1:foo
.  task2
.  task1:foo


                      doit - automation tool   36
up-to-date ?

   no file dependencies were modified
   no result dependencies were modified
   all targets exist
   compares => timestamp, size, checksum




                        doit - automation tool   37
up-to-date output
$ doit                  . (dot) => executed
.  compile

$ doit             -- (dashes) => skipped
­­ compile

$ rm main.o
$ doit
.  compile




                  doit - automation tool      38
environment setup
def task_start_server():
    for name in ('serverX', 'serverY'):
        yield {'name': name,
               'actions': [(start, (name,))],
               'teardown': [(stop, (name,))],
               }



def task_test_A():
    return {'actions':['echo fun_test_a'],
            'setup': ['start_server:serverX'],
           }

      test_A requires serverX to be running
    start serverX only if test_A not up-to-date
                      doit - automation tool      39
environment setup
def task_start_server():
    for name in ('serverX', 'serverY'):
        yield {'name': name,
               'actions': [(start, (name,))],
               'teardown': [(stop, (name,))],
               }

         stop serverX after all tasks finish running

def task_test_A():
    return {'actions':['echo fun_test_a'],
            'setup': ['start_server:serverX'],
           }

      test_A requires serverX to be running
    start serverX only if test_A not up-to-date
                       doit - automation tool          40
calculated dependency

def task_mod_deps():
    return {'actions': [(print_deps,)],
            'calc_dep': ["get_dep"],
           }
     dependencies are calculated on another task

def get_dep(mod):
    return {'file_dep': [‘a’, ‘b’, ‘c’]}
def task_get_dep():
    return {'actions':[(get_dep,)]}



                        doit - automation tool     41
calculated dependency

def task_mod_deps():
    return {'actions': [(print_deps,)],
            'calc_dep': ["get_dep"],
           }
     dependencies are calculated on another task

def get_dep(mod):
    return {'file_dep': [‘a’, ‘b’, ‘c’]}
def task_get_dep():
    return {'actions':[(get_dep,)]}

    returns dictionary with same keys as task-dict
      (file_dep, task_dep, result_dep, calc_dep)
                         doit - automation tool      42
other task features

   clean => clean actions ($doit clean <tasks>)
   doc => ($doit list)
   params => get parameters from command line
   getargs => get values computed in different
    tasks




                          doit - automation tool   43
other runner features

   verbosity => capture/display stdout/stderr
   title => controls output (task name)
   custom_reporters => complete output control
   use wildcard to select tasks




                       doit - automation tool     44
parallel execution

   parallel execution of tasks in multiple processes
   uses multiprocessing lib
   subject to same limitations...




                       doit - automation tool       45
auto execution

   long running process
   watches for file modifications and automatically
    re-execute outdated tasks
   works on linux and mac
   TDD, never leave the editor screen :)




                      doit - automation tool       46
thanks


   Questions ?

   website: http://python-doit.sourceforge.net




                      doit - automation tool      47

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (7)

Mona cheatsheet
Mona cheatsheetMona cheatsheet
Mona cheatsheet
 
Introduction to kotlin coroutines
Introduction to kotlin coroutinesIntroduction to kotlin coroutines
Introduction to kotlin coroutines
 
Something about Golang
Something about GolangSomething about Golang
Something about Golang
 
Construire son JDK en 10 étapes
Construire son JDK en 10 étapesConstruire son JDK en 10 étapes
Construire son JDK en 10 étapes
 
Metaprogramming and Reflection in Common Lisp
Metaprogramming and Reflection in Common LispMetaprogramming and Reflection in Common Lisp
Metaprogramming and Reflection in Common Lisp
 
Don't do this
Don't do thisDon't do this
Don't do this
 
Exploit techniques - a quick review
Exploit techniques - a quick reviewExploit techniques - a quick review
Exploit techniques - a quick review
 

Andere mochten auch

Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis SystemScalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Tamas K Lengyel
 
From NASA to Startups to Big Commerce
From NASA to Startups to Big CommerceFrom NASA to Startups to Big Commerce
From NASA to Startups to Big Commerce
Daniel Greenfeld
 
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
dcubeio
 
network monitoring system ppt
network monitoring system pptnetwork monitoring system ppt
network monitoring system ppt
ashutosh rai
 

Andere mochten auch (20)

Monitoring Server Temperature with Opsview
Monitoring Server Temperature with OpsviewMonitoring Server Temperature with Opsview
Monitoring Server Temperature with Opsview
 
Ekran System Forensic Monitoring Tool -BusinesstoVirtual Italy Partner
Ekran System Forensic Monitoring Tool -BusinesstoVirtual Italy Partner Ekran System Forensic Monitoring Tool -BusinesstoVirtual Italy Partner
Ekran System Forensic Monitoring Tool -BusinesstoVirtual Italy Partner
 
Control your deployments with Capistrano
Control your deployments with CapistranoControl your deployments with Capistrano
Control your deployments with Capistrano
 
Connecting Field Operations and the Corporate Office - FME Server as a Near R...
Connecting Field Operations and the Corporate Office - FME Server as a Near R...Connecting Field Operations and the Corporate Office - FME Server as a Near R...
Connecting Field Operations and the Corporate Office - FME Server as a Near R...
 
SeeTestAutomation - Mobile Test Automation Tool by Experitest
SeeTestAutomation - Mobile Test Automation Tool by ExperitestSeeTestAutomation - Mobile Test Automation Tool by Experitest
SeeTestAutomation - Mobile Test Automation Tool by Experitest
 
OpenID Summit Tokyo 2011
OpenID Summit Tokyo 2011OpenID Summit Tokyo 2011
OpenID Summit Tokyo 2011
 
Server Monitoring (Scaling while bootstrapped)
Server Monitoring  (Scaling while bootstrapped)Server Monitoring  (Scaling while bootstrapped)
Server Monitoring (Scaling while bootstrapped)
 
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis SystemScalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
Scalability, Fidelity and Stealth in the DRAKVUF Dynamic Malware Analysis System
 
Training Webinar: Detect Performance Bottlenecks of Applications
Training Webinar: Detect Performance Bottlenecks of ApplicationsTraining Webinar: Detect Performance Bottlenecks of Applications
Training Webinar: Detect Performance Bottlenecks of Applications
 
Training Webinar: Effective Platform Server Monitoring
Training Webinar: Effective Platform Server MonitoringTraining Webinar: Effective Platform Server Monitoring
Training Webinar: Effective Platform Server Monitoring
 
Oracle WebLogic Server: Remote Monitoring and Management
Oracle WebLogic Server: Remote Monitoring and ManagementOracle WebLogic Server: Remote Monitoring and Management
Oracle WebLogic Server: Remote Monitoring and Management
 
Real time human health monitoring and alert automation system
Real time human health monitoring and alert automation systemReal time human health monitoring and alert automation system
Real time human health monitoring and alert automation system
 
Reactive Stream Processing in Industrial IoT using DDS and Rx
Reactive Stream Processing in Industrial IoT using DDS and RxReactive Stream Processing in Industrial IoT using DDS and Rx
Reactive Stream Processing in Industrial IoT using DDS and Rx
 
C++ Generators and Property-based Testing
C++ Generators and Property-based TestingC++ Generators and Property-based Testing
C++ Generators and Property-based Testing
 
From NASA to Startups to Big Commerce
From NASA to Startups to Big CommerceFrom NASA to Startups to Big Commerce
From NASA to Startups to Big Commerce
 
暗号通貨勉強会
暗号通貨勉強会暗号通貨勉強会
暗号通貨勉強会
 
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
簡単、クレカ決済! PAY.JPを使ったクレカ決済の仕組み・開発運用時の考慮点について
 
network monitoring system ppt
network monitoring system pptnetwork monitoring system ppt
network monitoring system ppt
 
大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い大規模Redisサーバ縮小化の戦い
大規模Redisサーバ縮小化の戦い
 
Ekran system functions v. 5.0
Ekran system functions v. 5.0Ekran system functions v. 5.0
Ekran system functions v. 5.0
 

Ähnlich wie Doit apac-2010-1.0

LOSS_C11- Programming Linux 20221006.pdf
LOSS_C11- Programming Linux 20221006.pdfLOSS_C11- Programming Linux 20221006.pdf
LOSS_C11- Programming Linux 20221006.pdf
Thninh2
 

Ähnlich wie Doit apac-2010-1.0 (20)

Host any project in che with stacks & chefiles
Host any project in che with stacks & chefilesHost any project in che with stacks & chefiles
Host any project in che with stacks & chefiles
 
Autoconf&Automake
Autoconf&AutomakeAutoconf&Automake
Autoconf&Automake
 
Built in function
Built in functionBuilt in function
Built in function
 
DevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet EnterpriseDevOps Automation with Puppet Bolt & Puppet Enterprise
DevOps Automation with Puppet Bolt & Puppet Enterprise
 
Pemrograman Python untuk Pemula
Pemrograman Python untuk PemulaPemrograman Python untuk Pemula
Pemrograman Python untuk Pemula
 
LOSS_C11- Programming Linux 20221006.pdf
LOSS_C11- Programming Linux 20221006.pdfLOSS_C11- Programming Linux 20221006.pdf
LOSS_C11- Programming Linux 20221006.pdf
 
Princeton Wintersession: Software Quality Assurance Tooling
Princeton Wintersession: Software Quality Assurance ToolingPrinceton Wintersession: Software Quality Assurance Tooling
Princeton Wintersession: Software Quality Assurance Tooling
 
Incredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and GeneratorsIncredible Machine with Pipelines and Generators
Incredible Machine with Pipelines and Generators
 
Build Systems with autoconf, automake and libtool [updated]
Build Systems with autoconf, automake and libtool [updated]Build Systems with autoconf, automake and libtool [updated]
Build Systems with autoconf, automake and libtool [updated]
 
Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023Software Quality Assurance Tooling 2023
Software Quality Assurance Tooling 2023
 
Boo Manifesto
Boo ManifestoBoo Manifesto
Boo Manifesto
 
Funkcija, objekt, python
Funkcija, objekt, pythonFunkcija, objekt, python
Funkcija, objekt, python
 
DEF CON 27 - KYLE GWINNUP - next generation process emulation with binee
DEF CON 27 - KYLE GWINNUP - next generation process emulation with bineeDEF CON 27 - KYLE GWINNUP - next generation process emulation with binee
DEF CON 27 - KYLE GWINNUP - next generation process emulation with binee
 
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit SoftwaretestsEffizientere WordPress-Plugin-Entwicklung mit Softwaretests
Effizientere WordPress-Plugin-Entwicklung mit Softwaretests
 
Functions_in_Python.pptx
Functions_in_Python.pptxFunctions_in_Python.pptx
Functions_in_Python.pptx
 
جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۲
جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۲جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۲
جلسه پنجم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲- ارائه ۲
 
Simple tools to fight bigger quality battle
Simple tools to fight bigger quality battleSimple tools to fight bigger quality battle
Simple tools to fight bigger quality battle
 
DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)DevOps(4) : Ansible(2) - (MOSG)
DevOps(4) : Ansible(2) - (MOSG)
 
embeddedc-lecture1-160404055102.pptx
embeddedc-lecture1-160404055102.pptxembeddedc-lecture1-160404055102.pptx
embeddedc-lecture1-160404055102.pptx
 
Tutorial_Python1.pdf
Tutorial_Python1.pdfTutorial_Python1.pdf
Tutorial_Python1.pdf
 

Kürzlich hochgeladen

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Victor Rentea
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024Finding Java's Hidden Performance Traps @ DevoxxUK 2024
Finding Java's Hidden Performance Traps @ DevoxxUK 2024
 
WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​Elevate Developer Efficiency & build GenAI Application with Amazon Q​
Elevate Developer Efficiency & build GenAI Application with Amazon Q​
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
Biography Of Angeliki Cooney | Senior Vice President Life Sciences | Albany, ...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 

Doit apac-2010-1.0