SlideShare ist ein Scribd-Unternehmen logo
1 von 148
Itch Scratching
 the ActionMailer
        API
A brief foray into the mind of a masochist!
whoami?
whoami?
Working in Rails & Ruby for 4+ Years
whoami?
Working in Rails & Ruby for 4+ Years

Maintainer of TMail & Author of Mail
whoami?
Working in Rails & Ruby for 4+ Years

Maintainer of TMail & Author of Mail

    DBA and Internet Plumber
whoami?
Working in Rails & Ruby for 4+ Years

Maintainer of TMail & Author of Mail

    DBA and Internet Plumber

         Rails Contributor
whoami?
Working in Rails & Ruby for 4+ Years

Maintainer of TMail & Author of Mail

    DBA and Internet Plumber

         Rails Contributor

           Entrepreneur
y?
y?
Mail Application
y?
Mail Application

   Challenge
y?
Mail Application

   Challenge

     TMail
OMGLOLSPAM
OMGLOLSPAM
“TMail was a great SPAM checker...
if it crashed while parsing an email
  then you knew it was SPAM.”
               - Koz
Why not just fix TMail?
Why not just fix TMail?
 Released 10 patch and minor versions
Why not just fix TMail?
 Released 10 patch and minor versions

    I wrote over 600 lines of Docs
Why not just fix TMail?
 Released 10 patch and minor versions

    I wrote over 600 lines of Docs

      Built on a Strategy Pattern
Why not just fix TMail?
 Released 10 patch and minor versions

    I wrote over 600 lines of Docs

      Built on a Strategy Pattern

         Parser Written in C
Why not just fix TMail?
 Released 10 patch and minor versions

    I wrote over 600 lines of Docs

      Built on a Strategy Pattern

         Parser Written in C

        HARD TO FOLLOW
Why not just fix TMail?
Why not just fix TMail?
TMail was not very modular and hard to maintain
Why not just fix TMail?
TMail was not very modular and hard to maintain

        Wanted to write a major library
Why not just fix TMail?
TMail was not very modular and hard to maintain

        Wanted to write a major library

           How hard could email be?
Why not just fix TMail?
TMail was not very modular and hard to maintain

        Wanted to write a major library

           How hard could email be?

              I wanted a nice DSL
Why not just fix TMail?
TMail was not very modular and hard to maintain

        Wanted to write a major library

           How hard could email be?

              I wanted a nice DSL

                  Not as fun
Mail’s DSL is Simple
Mail’s DSL is Simple
Mail’s DSL is Simple
Mail’s DSL is Simple
Mail’s DSL is Simple
Mail’s DSL is Simple
Mail’s DSL is Simple
Mail’s DSL is Simple
How Hard Could It Be?
How Hard Could It Be?
        Read RFCs
How Hard Could It Be?
        Read RFCs

      Read more RFCs
How Hard Could It Be?
         Read RFCs

      Read more RFCs

     Keep reading RFCs...
How Hard Could It Be?
                 Read RFCs

              Read more RFCs

            Keep reading RFCs...

“email is defined in RFCs, so should be easy...”
RFCs
RFCs
RSpec FTW!
RSpec FTW!
I use RSpec because I am lazy
RSpec FTW!
I use RSpec because I am lazy

EVERYTHING in Mail is BDD
RSpec FTW!
I use RSpec because I am lazy

EVERYTHING in Mail is BDD

    Regressions Caught
RSpec FTW!
I use RSpec because I am lazy

EVERYTHING in Mail is BDD

    Regressions Caught

          Seriously
Spec’ing for Libraries
Spec’ing for Libraries
       Start Simple
Spec’ing for Libraries
           Start Simple

  Comments in Spec Files are OK
Spec’ing for Libraries
           Start Simple

  Comments in Spec Files are OK

      Use Custom Matchers
Spec’ing for Libraries
           Start Simple

  Comments in Spec Files are OK

      Use Custom Matchers

   Break Down Your Spec Files
Spec’ing for Libraries
           Start Simple

  Comments in Spec Files are OK

      Use Custom Matchers

   Break Down Your Spec Files

      Spec in Multiple Rubies
Start Somewhere
Start Somewhere
Start Somewhere
Start Somewhere
Comments are OK
Comments are OK
Use Custom Matchers
       when appropriate
Use Custom Matchers
       when appropriate
Use Custom Matchers
       when appropriate
Use Custom Matchers
       when appropriate
Custom Matchers
Custom Matchers
Break Down Spec Files
Break Down Spec Files
Break Down Spec Files
          26 Sub Directories
Break Down Spec Files
          26 Sub Directories

          79 Ruby Spec Files
Break Down Spec Files
          26 Sub Directories

          79 Ruby Spec Files

          73 Edge Case Emails
Break Down Spec Files
          26 Sub Directories

          79 Ruby Spec Files

          73 Edge Case Emails

          Many Many Lines of Specs
Break Down Spec Files
          26 Sub Directories

          79 Ruby Spec Files

          73 Edge Case Emails

          Many Many Lines of Specs

          1161 examples
Break Down Spec Files
          26 Sub Directories

          79 Ruby Spec Files

          73 Edge Case Emails

          Many Many Lines of Specs

          1161 examples

          No Failures :)
Spec in Multiple Rubies
Spec in Multiple Rubies
   Have to be a good Ruby Citizen
Spec in Multiple Rubies
   Have to be a good Ruby Citizen

               JRuby
Spec in Multiple Rubies
   Have to be a good Ruby Citizen

               JRuby

                REE
Spec in Multiple Rubies
   Have to be a good Ruby Citizen

               JRuby

                REE

              Rubinius
                (almost)
Spec in Multiple Rubies
   Have to be a good Ruby Citizen

                JRuby

                 REE

               Rubinius
                  (almost)



    MRI - 1.8.6, 1.8.7, 1.9.1, 1.9.2
But What About Real Life?
But What About Real Life?
  Mail parses the Enron and Trec Data Sets
But What About Real Life?
  Mail parses the Enron and Trec Data Sets
              mikel@baci ~/Code
               $ du -hs corpus/


            2.4G    of Emails
But What About Real Life?
  Mail parses the Enron and Trec Data Sets
               mikel@baci ~/Code
                $ du -hs corpus/


             2.4G     of Emails

                mikel@baci ~/Code
      $ find corpus -name "*" -print | wc -l


               328,248 Emails
show me the model!
show me the model!
Mail
show me the model!
Mail   Message
show me the model!
Mail   Message   Header
show me the model!
Mail   Message   Header




                 Body
show me the model!
show me the model!
Message   Body
show me the model!
Message            Body




          Header
show me the model!
Message            Body




          Header          FieldList
show me the model!
Message            Body




          Header          FieldList   Fields
show me the model!
Message            Body




          Header          FieldList                          Fields




                                  StructuredField

                                      Content-Type
                               Content-Transfer-Encoding
                               To, From, Cc, Bcc, Reply-To
show me the model!
Message            Body




          Header          FieldList                          Fields




                                  StructuredField                      UnstructuredField

                                      Content-Type                            Subject
                               Content-Transfer-Encoding                  X-Headers et al
                               To, From, Cc, Bcc, Reply-To            Any other unparsable field
show me the model!
show me the model!
Message   Header
show me the model!
Message          Header




          Body
show me the model!
Message          Header



                          Preamble



          Body
show me the model!
Message          Header



                          Preamble


                           One or
          Body
                          Many Parts
show me the model!
Message          Header



                          Preamble


                           One or
          Body
                          Many Parts


                           Epilogue
show me the model!
Message          Header



                          Preamble


                           One or
          Body                           Message
                          Many Parts

                                       Ohhh... O.O.
                                        Recursive
                           Epilogue
                                        Type Stuff
show me the model!
show me the model!
      And Thats It!
show me the model!
      And Thats It!

      Simple Hey?
show me the model!
   Header Errors                             Legacy Emails
      Parsers     rfc822      Delivery Agents
                       And Thats It!           SMTP
   Body Decoding
          SPAM       PGP Signing       POP3 File Types
    Mbox               Simple Hey?              Network
               IMAP           Language Support
Sendmail Delivery Bad Emails              Encoding
                             Edge Cases
  Pattern Matching
                    OMGMIME! Decoding Attachments
     Interceptors
                         File IO    Domain Key Emails
       Observers                  Status Reports
          Inline Attachments
OK, ActionMailer?
OK, ActionMailer?
   Much Easier to Use
OK, ActionMailer?
    Much Easier to Use

  Nicer Defaults & Config
OK, ActionMailer?
          Much Easier to Use

        Nicer Defaults & Config

ActionMailer Methods Return Mail Object
OK, ActionMailer?
          Much Easier to Use

        Nicer Defaults & Config

ActionMailer Methods Return Mail Object

   Deprecated (not Decapitated) API
OK, ActionMailer?
          Much Easier to Use

        Nicer Defaults & Config

ActionMailer Methods Return Mail Object

   Deprecated (not Decapitated) API

               Tutorials
Much Easier to Use
Much Easier to Use
   New Mailer Directory
Much Easier to Use
        New Mailer Directory

Can Call “mail” method and pass a hash
Nicer Defaults
Nicer Defaults
Nicer Config
Nicer Config
AM Returns Mail
AM Returns Mail
AM Returns Mail
Mail Call Back Hooks
Mail Call Back Hooks
Mail Call Back Hooks
Mail Call Back Hooks
Mail Call Back Hooks
Mail Call Back Hooks
Deprecated API
   Decapitation Free Zone
Deprecated API
      Decapitation Free Zone



 Did not nuke the old API
Deprecated API
             Decapitation Free Zone



       Did not nuke the old API

New API triggers ONLY if you call “mail”
Deprecated API
             Decapitation Free Zone



       Did not nuke the old API

New API triggers ONLY if you call “mail”

    Old API in place if no “mail” call
Deprecated API
             Decapitation Free Zone



       Did not nuke the old API

New API triggers ONLY if you call “mail”

    Old API in place if no “mail” call

        Will be Removed in 3.1
Deprecated API
   Decapitation Free Zone
Deprecated API
   Decapitation Free Zone
Deprecated API
   Decapitation Free Zone
HELP!!!
HELP!!!
Replace treetop with Ragel or RACC
HELP!!!
 Replace treetop with Ragel or RACC

Implement full POP3 and IMAP Support
HELP!!!
 Replace treetop with Ragel or RACC

Implement full POP3 and IMAP Support

     Domain Key Implementation
HELP!!!
 Replace treetop with Ragel or RACC

Implement full POP3 and IMAP Support

     Domain Key Implementation

            PGP Signing
HELP!!!
 Replace treetop with Ragel or RACC

Implement full POP3 and IMAP Support

     Domain Key Implementation

            PGP Signing

        More Documentation
Tutorials
Tutorials
 lindsaar.net
Tutorials
     lindsaar.net

www.RailsDispatch.com
Tutorials
     lindsaar.net

www.RailsDispatch.com

 www.RailsCasts.com
KTHXBAI
  Questions?

   @raasdnil

mikel@rubyx.com

   lindsaar.net
Itch Scratching

Weitere ähnliche Inhalte

Ähnlich wie Itch Scratching

Spark NLP: State of the Art Natural Language Processing at Scale
Spark NLP: State of the Art Natural Language Processing at ScaleSpark NLP: State of the Art Natural Language Processing at Scale
Spark NLP: State of the Art Natural Language Processing at ScaleDatabricks
 
Games for the Masses (Jax)
Games for the Masses (Jax)Games for the Masses (Jax)
Games for the Masses (Jax)Wooga
 
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015Chef
 
Scaling search to a million pages with Solr, Python, and Django
Scaling search to a million pages with Solr, Python, and DjangoScaling search to a million pages with Solr, Python, and Django
Scaling search to a million pages with Solr, Python, and Djangotow21
 
Write your Ruby in Style
Write your Ruby in StyleWrite your Ruby in Style
Write your Ruby in StyleBhavin Javia
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivationjistr
 
RESTing in the ALPS Mike Amundsen's Presentation from QCon London 2013
RESTing in the ALPS Mike Amundsen's Presentation from QCon London 2013RESTing in the ALPS Mike Amundsen's Presentation from QCon London 2013
RESTing in the ALPS Mike Amundsen's Presentation from QCon London 2013CA API Management
 
2010 08-06 - sd ruby - solr
2010 08-06 - sd ruby - solr2010 08-06 - sd ruby - solr
2010 08-06 - sd ruby - solrNick Zadrozny
 
Solr Powr — Enterprise-grade search for your app
Solr Powr — Enterprise-grade search for your appSolr Powr — Enterprise-grade search for your app
Solr Powr — Enterprise-grade search for your appNick Zadrozny
 
Querying rich text with XQuery
Querying rich text with XQueryQuerying rich text with XQuery
Querying rich text with XQuerylucenerevolution
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Espen Brækken
 
Enlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & ToolkitEnlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & ToolkitSamsung Open Source Group
 
Q con london2011-matthewwall-whyichosemongodbforguardiancouk
Q con london2011-matthewwall-whyichosemongodbforguardiancoukQ con london2011-matthewwall-whyichosemongodbforguardiancouk
Q con london2011-matthewwall-whyichosemongodbforguardiancoukRoger Xia
 
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИSIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИPavel Tsukanov
 
Le PERL est mort
Le PERL est mortLe PERL est mort
Le PERL est mortapeiron
 
Aspose.Network Brochure
Aspose.Network BrochureAspose.Network Brochure
Aspose.Network BrochureShahzad Latif
 
Ruby Metaprogramming - OSCON 2008
Ruby Metaprogramming - OSCON 2008Ruby Metaprogramming - OSCON 2008
Ruby Metaprogramming - OSCON 2008Brian Sam-Bodden
 
Moving from Relational to Document Store
Moving from Relational to Document StoreMoving from Relational to Document Store
Moving from Relational to Document StoreGraham Tackley
 
Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHPGautam Rege
 

Ähnlich wie Itch Scratching (20)

Spark NLP: State of the Art Natural Language Processing at Scale
Spark NLP: State of the Art Natural Language Processing at ScaleSpark NLP: State of the Art Natural Language Processing at Scale
Spark NLP: State of the Art Natural Language Processing at Scale
 
Intro to EmberJS
Intro to EmberJSIntro to EmberJS
Intro to EmberJS
 
Games for the Masses (Jax)
Games for the Masses (Jax)Games for the Masses (Jax)
Games for the Masses (Jax)
 
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015
Your Goat Antifragiled My Snowflake!: Demystifying DevOps Jargon - ChefConf 2015
 
Scaling search to a million pages with Solr, Python, and Django
Scaling search to a million pages with Solr, Python, and DjangoScaling search to a million pages with Solr, Python, and Django
Scaling search to a million pages with Solr, Python, and Django
 
Write your Ruby in Style
Write your Ruby in StyleWrite your Ruby in Style
Write your Ruby in Style
 
Ruby and Rails short motivation
Ruby and Rails short motivationRuby and Rails short motivation
Ruby and Rails short motivation
 
RESTing in the ALPS Mike Amundsen's Presentation from QCon London 2013
RESTing in the ALPS Mike Amundsen's Presentation from QCon London 2013RESTing in the ALPS Mike Amundsen's Presentation from QCon London 2013
RESTing in the ALPS Mike Amundsen's Presentation from QCon London 2013
 
2010 08-06 - sd ruby - solr
2010 08-06 - sd ruby - solr2010 08-06 - sd ruby - solr
2010 08-06 - sd ruby - solr
 
Solr Powr — Enterprise-grade search for your app
Solr Powr — Enterprise-grade search for your appSolr Powr — Enterprise-grade search for your app
Solr Powr — Enterprise-grade search for your app
 
Querying rich text with XQuery
Querying rich text with XQueryQuerying rich text with XQuery
Querying rich text with XQuery
 
Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex Ruby on Rails (RoR) as a back-end processor for Apex
Ruby on Rails (RoR) as a back-end processor for Apex
 
Enlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & ToolkitEnlightenment: A Cross Platform Window Manager & Toolkit
Enlightenment: A Cross Platform Window Manager & Toolkit
 
Q con london2011-matthewwall-whyichosemongodbforguardiancouk
Q con london2011-matthewwall-whyichosemongodbforguardiancoukQ con london2011-matthewwall-whyichosemongodbforguardiancouk
Q con london2011-matthewwall-whyichosemongodbforguardiancouk
 
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИSIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
SIGNALR - ОБМЕН СООБЩЕНИЯМИ В РЕАЛЬНОМ ВРЕМЕНИ
 
Le PERL est mort
Le PERL est mortLe PERL est mort
Le PERL est mort
 
Aspose.Network Brochure
Aspose.Network BrochureAspose.Network Brochure
Aspose.Network Brochure
 
Ruby Metaprogramming - OSCON 2008
Ruby Metaprogramming - OSCON 2008Ruby Metaprogramming - OSCON 2008
Ruby Metaprogramming - OSCON 2008
 
Moving from Relational to Document Store
Moving from Relational to Document StoreMoving from Relational to Document Store
Moving from Relational to Document Store
 
Rails Vs CakePHP
Rails Vs CakePHPRails Vs CakePHP
Rails Vs CakePHP
 

Kürzlich hochgeladen

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
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
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
 
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
 
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
 

Kürzlich hochgeladen (20)

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
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.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
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
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
 
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
 

Itch Scratching

Hinweis der Redaktion

  1. No CS Experience
  2. No CS Experience
  3. No CS Experience
  4. No CS Experience
  5. No CS Experience
  6. Read design patterns in Ruby
  7. Read design patterns in Ruby
  8. Read design patterns in Ruby
  9. Read design patterns in Ruby
  10. Read design patterns in Ruby