SlideShare una empresa de Scribd logo
1 de 21
Descargar para leer sin conexión
The Rails side!
  Edwin Vlieg - BlueTools




    Twente.rb - november 2008
MoneyBird
    • Simpele facturatie voor kleine bedrijven
    • Facturen aanmaken, versturen en beheren
    • Simpel contactbeheer
    • Binnenkort periodieke facturen
    • Innovatieve Ajax interface voor factuur
            bewerken


Edwin Vlieg — MoneyBird 2008       2
MoneyBird
    • April 2008: eerste idee
    • Juni 2008: prototypes van applicatie gereed
            (HTML mockups met JavaScript
            functionaliteit)
    • September 2008: test versie gereed
    • Oktober 2008: live!

Edwin Vlieg — MoneyBird 2008       3
The Rails side!
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐+‐‐‐‐‐‐‐+
| Name                 | Lines |   LOC | Classes | Methods | M/C | LOC/M |
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐+‐‐‐‐‐‐‐+
| Controllers          |   977 |   779 |      10 |      89 |   8 |     6 |
| Helpers              |   300 |   194 |       0 |      30 |   0 |     4 |
| Models               |  1340 |   983 |      22 |     127 |   5 |     5 |
| Libraries            |   830 |   575 |       4 |      61 |  15 |     7 |
| Model specs          |  1045 |   826 |       0 |       3 |   0 |   273 |
| View specs           |   252 |   189 |       0 |       0 |   0 |     0 |
| Controller specs     |   678 |   560 |       1 |       6 |   6 |    91 |
| Helper specs         |   185 |   162 |       0 |       0 |   0 |     0 |
| Library specs        |    68 |    57 |       1 |       0 |   0 |     0 |
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐+‐‐‐‐‐‐‐+
| Total                |  5675 |  4325 |      38 |     316 |   8 |    11 |
+‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐‐‐‐‐+‐‐‐‐‐+‐‐‐‐‐‐‐+
  Code LOC: 2531     Test LOC: 1794     Code to Test Ratio: 1:0.7



      Edwin Vlieg — MoneyBird 2008          4
The Rails side!
    • Rails 2.2 (since this week!)
    • PostgreSQL
    • Capistrano

    • Developed in TextMate

Edwin Vlieg — MoneyBird 2008          5
Plugins
    • acts_as_state_machine
    • attachment_fu
    • i18n_labels
    • localized_dates
    • subdomain_fu
    • restful-authentication
Edwin Vlieg — MoneyBird 2008      6
Rails 2.2: I18n
     • Scoping
# Override translate method to consider translate_scope.
def t(text, options = {})
  scope = (translate_scope.dup << options.delete(:subscope)).compact
  super(text, {:scope => scope}.merge(options))
end

# The current translation scope, default to current controller name.
def translate_scope
  @translate_scope || [template.base_path]
end




 Edwin Vlieg — MoneyBird 2008          7
Rails 2.2: I18n
    • Localized labels, based on
            ActiveRecord::human_attribute_name
                       <tr>
                         <th><%= f.label :name %></label></th>
                         <td>
                           <%= f.text_field :name %>
                           <%= error_message_on :contact, :name %>
                         </td>
                       </tr>
                       <tr>
                         <th><%= f.label :contact_name %></th>
                         <td><%= f.text_field :contact_name %></td>
                       </tr>

Edwin Vlieg — MoneyBird 2008              8
Rails 2.2: I18n
    • In locales definition:
                nl:
                  activerecord:
                    attributes:
                      contact:
                        contact_name: Contactpersoon
                        name: Naam of Bedrijfsnaam




Edwin Vlieg — MoneyBird 2008          9
Testing
    •       RSpec

                 •       For testing models (business logic)

                 •       Covers 141 examples

    •       Cucumber

                 •       Plain text stories for integration testing

                 •       Covers 535 steps

    •       Factory girl

    •       Webrat
Edwin Vlieg — MoneyBird 2008              10
Testing: Cucumber
  Feature: invoice
    An user should be able to manage his invoices

      Scenario: Create a new invoice
        Given I'm logged in as edwin at bluetools
        When I follow quot;New invoicequot;
         And I fill in quot;Name or Companynamequot; with quot;Test companyquot;
         And I fill in quot;Addressquot; with quot;Hengelosestraat 534quot;
         And I fill in quot;invoice_zipcodequot; with quot;7500AGquot;
         And I fill in quot;invoice_cityquot; with quot;Enschedequot;
         And I fill in quot;invoice_new_detail_attributes__descriptionquot; with quot;Test descriptionquot;
         And I fill in quot;invoice_new_detail_attributes__pricequot; with quot;123quot;
         And I press quot;Savequot;
        Then an invoice with invoice id quot;2008-0001quot; should exist
         And I should see quot;2008-0001quot;
         And I should see quot;Test companyquot;
         And I should see quot;Test descriptionquot;

      Scenario: Create a new invoice with no invoice details
        Given I'm logged in as edwin at bluetools
        When I follow quot;New invoicequot;
         And I fill in quot;Name or Companynamequot; with quot;Test companyquot;
         And I fill in quot;Addressquot; with quot;Hengelosestraat 534quot;
         And I fill in quot;invoice_zipcodequot; with quot;7500AGquot;
         And I fill in quot;invoice_cityquot; with quot;Enschedequot;
         And I press quot;Savequot;
        Then no invoice with name quot;Test companyquot; should exist
         And I should see quot;Details should contain at least one rowquot;
Edwin Vlieg — MoneyBird 2008                  11
Testing: Cucumber
           • Only ~30 steps defined!
           • Example resource definition and assertion:
Given /^I've created (a|an) ([A-z].*) with ([A-z ].* quot;.*quot;( and )?)+$/ do |_, resource, fields, _| #'
  fields = fields.split(quot; and quot;).collect { |f| r = f.strip.match(/^([A-z ].*) quot;(.*)quot;$/); [r[1].tr(quot; quot;,
quot;_quot;).underscore, r[2]] }.flatten
  Factory(resource.tr(quot; quot;, quot;_quot;).to_sym, Hash[*fields])
end

# Then a company with name quot;foobarquot; should exist
Then /^(a|an|no) ([A-z].*) with ([A-z ].*) quot;(.*)quot; should exist$/ do |condition, resource, field, value|
  if resource.to_class.respond_to?(:exists?)
    condition = condition == 'no' ? false : true
    resource.to_class.exists?({ field.tr(quot; quot;, quot;_quot;).underscore => value }).should == condition
  else
    raise quot;Resource #{resource.classify} isn't a modelquot;
  end
end




       Edwin Vlieg — MoneyBird 2008                12
PDF generation
    • PDF writer:
       • API.... :-(
       • PNG file errors (‘PNG uses more than
                         8 bits’, ‘Invalid filter algorithm 61’)




Edwin Vlieg — MoneyBird 2008              13
PDF generation
    • Prawn
       • API... :-)
       • Better PNG support
       • Only the Euro sign doesn’t show up


Edwin Vlieg — MoneyBird 2008   14
PDF generation
     Prawn::Document.generate(quot;fancy_table.pdfquot;) do

          data = [[quot;Gregory Brownquot;,   quot;gregory.t.brown@fakemail.testquot;   ],
                  [quot;James Healyquot; ,    quot;jimmy@fakemail.testquot;             ],
                  [quot;Ross Perotquot;   ,   quot;ross@fakemail.testquot;              ],
                  [quot;Al Gorequot;      ,   quot;al@fakemail.testquot;                ],
                  [quot;Ralph Naderquot; ,    quot;ralph@fakemail.testquot;             ]]

       table data,
         :position             =>   :center,
         :headers              =>   [quot;Namequot;, quot;Emailquot;],
         :row_colors           =>   [quot;ffffffquot;,quot;ffff00quot;],
         :vertical_padding     =>   5,
         :horizontal_padding   =>   3
     end




Edwin Vlieg — MoneyBird 2008            15
Concerned_with
    • Problem: Invoice model has 450 LOC
    • Other models have on average 200 LOC
    • Make the model less fat with
            concerned_with




Edwin Vlieg — MoneyBird 2008   16
Concerned_with
                # In config/initializers
                class << ActiveRecord::Base
                  def concerned_with(*concerns)
                    concerns.each do |concern|
                      require_dependency quot;#{name.underscore}/#{concern}quot;
                    end
                  end
                end

                # In models/invoice.rb
                class Invoice < ActiveRecord::Base
                  concerned_with :validations, :states, :policies, :scopes
                  ...
                end

                # In models/invoice/validations.rb
                class Invoice
                  validates_presence_of ...
                end



Edwin Vlieg — MoneyBird 2008                17
Invoice edit interface
    • Difference between new and edit action:
    • ‘edit’ is performed on an persistant
            instance
    • ‘new’ does not exist after the request has
            finished




Edwin Vlieg — MoneyBird 2008   18
Invoice edit interface
    • Solution: always load the complete form on
            the background
    • Switch between display and form with JS
    • Just plain old submitting the complete form
            for creating a new record




Edwin Vlieg — MoneyBird 2008   19
Invoice edit interface
    • Input is validated and rendered via an Ajax
            call.

                  <div id=quot;invoice_descriptionquot;>
                    <div class=quot;showquot;>
                      <%= render :partial => quot;invoice_descriptionquot; %>
                    </div>
                    <div class=quot;formquot;>
                      <%= render :partial => quot;invoice_description_formquot; %>
                    </div>
                  </div>




Edwin Vlieg — MoneyBird 2008                20
The End!
Try MoneyBird for free at www.moneybird.nl




          info@moneybird.nl
            blog.bluetools.nl

Más contenido relacionado

Destacado

mPay Gateway Presentation
mPay Gateway PresentationmPay Gateway Presentation
mPay Gateway Presentationvwmoga
 
海江南推广演示文件
海江南推广演示文件海江南推广演示文件
海江南推广演示文件Vincent YU
 
深圳市潜在购房者调查(部分)
深圳市潜在购房者调查(部分)深圳市潜在购房者调查(部分)
深圳市潜在购房者调查(部分)Vincent YU
 
Anona Tv Company Presentation
Anona Tv   Company PresentationAnona Tv   Company Presentation
Anona Tv Company PresentationSharon_Malkiel
 
Wentworth Institute 2010
Wentworth Institute 2010Wentworth Institute 2010
Wentworth Institute 2010Greg Page
 
Object Oriented Programming for web applications
Object Oriented Programming for web applicationsObject Oriented Programming for web applications
Object Oriented Programming for web applicationsEdwin Vlieg
 
Docker at MoneyBird
Docker at MoneyBirdDocker at MoneyBird
Docker at MoneyBirdEdwin Vlieg
 
Frontend ontwikkeling
Frontend ontwikkelingFrontend ontwikkeling
Frontend ontwikkelingEdwin Vlieg
 
From Idea to Business
From Idea to BusinessFrom Idea to Business
From Idea to BusinessEdwin Vlieg
 
Docker from a team perspective
Docker from a team perspectiveDocker from a team perspective
Docker from a team perspectiveEdwin Vlieg
 
Advanced Testing on RubyEnRails '09
Advanced Testing on RubyEnRails '09Advanced Testing on RubyEnRails '09
Advanced Testing on RubyEnRails '09Edwin Vlieg
 

Destacado (16)

Cueva santa
Cueva santa Cueva santa
Cueva santa
 
mPay Gateway Presentation
mPay Gateway PresentationmPay Gateway Presentation
mPay Gateway Presentation
 
海江南推广演示文件
海江南推广演示文件海江南推广演示文件
海江南推广演示文件
 
深圳市潜在购房者调查(部分)
深圳市潜在购房者调查(部分)深圳市潜在购房者调查(部分)
深圳市潜在购房者调查(部分)
 
Cartuja valldecrist
Cartuja valldecristCartuja valldecrist
Cartuja valldecrist
 
Life sabina teix pi negre
Life sabina teix pi negreLife sabina teix pi negre
Life sabina teix pi negre
 
Anona Tv Company Presentation
Anona Tv   Company PresentationAnona Tv   Company Presentation
Anona Tv Company Presentation
 
Wentworth Institute 2010
Wentworth Institute 2010Wentworth Institute 2010
Wentworth Institute 2010
 
Object Oriented Programming for web applications
Object Oriented Programming for web applicationsObject Oriented Programming for web applications
Object Oriented Programming for web applications
 
Guia temps 2011
Guia temps 2011Guia temps 2011
Guia temps 2011
 
Docker at MoneyBird
Docker at MoneyBirdDocker at MoneyBird
Docker at MoneyBird
 
Frontend ontwikkeling
Frontend ontwikkelingFrontend ontwikkeling
Frontend ontwikkeling
 
From Idea to Business
From Idea to BusinessFrom Idea to Business
From Idea to Business
 
Temps guia 2012
Temps guia 2012Temps guia 2012
Temps guia 2012
 
Docker from a team perspective
Docker from a team perspectiveDocker from a team perspective
Docker from a team perspective
 
Advanced Testing on RubyEnRails '09
Advanced Testing on RubyEnRails '09Advanced Testing on RubyEnRails '09
Advanced Testing on RubyEnRails '09
 

Similar a MoneyBird - The Rails Side

Rails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity PresentationRails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity Presentationrailsconf
 
Ajax On S2 Odp
Ajax On S2 OdpAjax On S2 Odp
Ajax On S2 Odpghessler
 
Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2Byrne Reese
 
Neil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do ItNeil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do ItCarsonified Team
 
How Not To Code Flex Applications
How Not To Code Flex ApplicationsHow Not To Code Flex Applications
How Not To Code Flex Applicationsjeff tapper
 
Plone Interactivity
Plone InteractivityPlone Interactivity
Plone InteractivityEric Steele
 
Microsoft ASP.NET 4.0 : What's Next?
Microsoft ASP.NET 4.0 : What's Next?Microsoft ASP.NET 4.0 : What's Next?
Microsoft ASP.NET 4.0 : What's Next?goodfriday
 
Wai Aria - An Intro
Wai Aria - An IntroWai Aria - An Intro
Wai Aria - An IntroMatt Machell
 
Make Everyone a Tester: Natural Language Acceptance Testing
Make Everyone a Tester: Natural Language Acceptance TestingMake Everyone a Tester: Natural Language Acceptance Testing
Make Everyone a Tester: Natural Language Acceptance TestingViget Labs
 
When To Use Ruby On Rails
When To Use Ruby On RailsWhen To Use Ruby On Rails
When To Use Ruby On Railsdosire
 
Building Web Interface On Rails
Building Web Interface On RailsBuilding Web Interface On Rails
Building Web Interface On RailsWen-Tien Chang
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Librariesjeresig
 
Ten modules I haven't yet talked about
Ten modules I haven't yet talked aboutTen modules I haven't yet talked about
Ten modules I haven't yet talked aboutacme
 
Page Caching Resurrected
Page Caching ResurrectedPage Caching Resurrected
Page Caching ResurrectedBen Scofield
 
Supersize me
Supersize meSupersize me
Supersize medominion
 

Similar a MoneyBird - The Rails Side (20)

Rails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity PresentationRails 3 And The Real Secret To High Productivity Presentation
Rails 3 And The Real Secret To High Productivity Presentation
 
Ajax On S2 Odp
Ajax On S2 OdpAjax On S2 Odp
Ajax On S2 Odp
 
Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2Hacking Movable Type Training - Day 2
Hacking Movable Type Training - Day 2
 
Neil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do ItNeil Patel - What You Need to be Measuring and How to Do It
Neil Patel - What You Need to be Measuring and How to Do It
 
How Not To Code Flex Applications
How Not To Code Flex ApplicationsHow Not To Code Flex Applications
How Not To Code Flex Applications
 
Plone Interactivity
Plone InteractivityPlone Interactivity
Plone Interactivity
 
Microsoft ASP.NET 4.0 : What's Next?
Microsoft ASP.NET 4.0 : What's Next?Microsoft ASP.NET 4.0 : What's Next?
Microsoft ASP.NET 4.0 : What's Next?
 
Wai Aria - An Intro
Wai Aria - An IntroWai Aria - An Intro
Wai Aria - An Intro
 
Front End on Rails
Front End on RailsFront End on Rails
Front End on Rails
 
Make Everyone a Tester: Natural Language Acceptance Testing
Make Everyone a Tester: Natural Language Acceptance TestingMake Everyone a Tester: Natural Language Acceptance Testing
Make Everyone a Tester: Natural Language Acceptance Testing
 
Satchmo
SatchmoSatchmo
Satchmo
 
When To Use Ruby On Rails
When To Use Ruby On RailsWhen To Use Ruby On Rails
When To Use Ruby On Rails
 
Building Web Interface On Rails
Building Web Interface On RailsBuilding Web Interface On Rails
Building Web Interface On Rails
 
More Secrets of JavaScript Libraries
More Secrets of JavaScript LibrariesMore Secrets of JavaScript Libraries
More Secrets of JavaScript Libraries
 
Javascript Basic
Javascript BasicJavascript Basic
Javascript Basic
 
Ten modules I haven't yet talked about
Ten modules I haven't yet talked aboutTen modules I haven't yet talked about
Ten modules I haven't yet talked about
 
Page Caching Resurrected
Page Caching ResurrectedPage Caching Resurrected
Page Caching Resurrected
 
Supersize me
Supersize meSupersize me
Supersize me
 
Opensocial Codelab
Opensocial CodelabOpensocial Codelab
Opensocial Codelab
 
Haml, Sass & Compass
Haml, Sass & CompassHaml, Sass & Compass
Haml, Sass & Compass
 

Último

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 

Último (20)

Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 

MoneyBird - The Rails Side