SlideShare ist ein Scribd-Unternehmen logo
1 von 54
Downloaden Sie, um offline zu lesen
Desktop Application with Ruby



                  Getting started with
I am...

                        PHP ZEND
                        KOHANA JSE JEE
                        Ruby GWT JavaScript
                        jQuery sinatra
                        BackboneJS CSS3
                        HTML5 MySQL Drupal
Anis Uddin Ahmad        MongoDB PHPUNIT Groovy
CTO & Co-Founder        JRuby Symfony2 SWING
WNeeds Ltd.
                        sqlite Doctrain solr Phing grails ...
!=
Ruby is not ONLY for web
It's a generic purpose language
generic purpose?
●
    Web Application
●
    Desktop Application
●
    Mobile Application (Yes iPhone too!)
●
    DSLs
●
    Antyhing you can think*
So, Ruby can make Desktop App?




                  Okay...
                 But HOW?
Many Ways!

  Shoes       Ruby-GNOME2 / GTK

WxRuby                 Ruby-Tk

    Ruby Cocoa / MacRuby

QtRuby                JRuby + Swing

         FxRuby      JRuby + SWT
Many Ways!

  Shoes       Ruby-GNOME2 / GTK

WxRuby                 Ruby-Tk

    Ruby Cocoa / MacRuby

QtRuby            JRuby + Swing
         FxRuby    JRuby + SWT
Shoes




 cross-platform toolkit for
writing graphical apps easily
  and artfully using Ruby
Starting with Shoes
●
    Download (http://shoesrb.com/downloads))
●
    Run Shoes
Starting with Shoes
●
    Download (http://shoesrb.com/downloads))
●
    Run Shoes
Shoes example
Shoes.app :width => 300, :height => 200 do
  button("Click me!") { alert("Good job.") }
end
Shoes example
Shoes.app :width => 300, :height => 200 do
  button("Click me!") { alert("Good job.") }
end
Shoes example (Clock)
Shoes.app do
  @time = title "0:00"
  every 1 do
    @time.replace(Time.now.strftime("%I:%M %p"))
  end
end
Hackety Hack!




   http://hackety.com/
Packaging Shoes
JRuby
The Ruby Programming Language on the JVM
Ruby for desktop application? Yes we can!
The Redcar Editor




    http://redcareditor.com/
Why JRuby?
●
    High performance
Why JRuby?
●
    High performance
●
    Real threading
Why JRuby?
●
    High performance
●
    Real threading
●
    Vast array of libraries (gems + JARs)
Why JRuby?
●
    High performance
●
    Real threading
●
    Vast array of libraries (gems + JARs)
●
    Platform Independent
Why JRuby?
●
    High performance
●
    Real threading
●
    Vast array of libraries (gems + JARs)
●
    Platform Independent
●
    Enterprise Acceptance
Why JRuby?
●
    High performance
●
    Real threading
●
    Vast array of libraries (gems + JARs)
●
    Platform Independent
●
    Enterprise Acceptance



          The best of both worlds!
Let's make with JRuby!
Get JRuby
●
     Download
●
     Extract
●
     Add bin subdirectory to your $PATH
      –   (PATH=path/to/jruby/bin:$PATH)
●
     Test it: jruby -v




●
    Assuming you have jdk 1.7 installed
●
    Can be installed with rvm too
Import Java Swing in .rb
include Java

import javax.swing.JFrame
import javax.swing.JComboBox
import javax.swing.JButton
import javax.swing.JPanel
import javax.swing.JLabel
import javax.swing.JTextField

import java.awt.GridLayout
Make a Frame (JFrame)
class NumberConverter < JFrame

   def initialize
     super('Number Format Converter')

      set_size(400,140);
      set_visible(true);
       set_default_close_operation(JFrame::EXIT_ON_CLOSE);
   end

end

num_converter = NumberConverter.new
Let's run it!
$ cd go/to/source/dir
$ jruby number_converter.rb
Place container
super('Number Format Converter')

main = JPanel.new;

get_content_pane().add("Center", main);
Set Layout
super('Number Format Converter')

main = JPanel.new;
main.set_layout(GridLayout.new(3,3,2,2))

get_content_pane().add("Center", main)
Add Components
main.set_layout(GridLayout.new(3,3,2,2))

main.add(JLabel.new("Convert From : ", JLabel::RIGHT))
main.add(@cmbFrom = JComboBox.new)
main.add(@input = JTextField.new(15))
Where are they going?
main.set_layout(GridLayout.new(3,3,2,2))

main.add(JLabel.new("Convert From : ", JLabel::RIGHT))
main.add(@cmbFrom = JComboBox.new)
main.add(@input = JTextField.new(15))




              1           2               3

              4           5               6

              7           8               9
Add the rest of
main.add(@input = JTextField.new(15))

# Second row
main.add(JLabel.new("Convert To : ", JLabel::RIGHT));
main.add(@cmbTo = JComboBox.new);
main.add(result = JTextField.new(15));

# Third row
main.add(JLabel.new(" ")); # Leave this cell blank
main.add(btn = JButton.new("CONVERT"));
Let's run again!
$ cd go/to/source/dir
$ jruby number_converter.rb
More with components
main.add(result = JTextField.new(15));
result.set_editable(false);

main.add(btn = Jbutton.new("CONVERT"));

# Add options to comboBoxes
num_formats = ["Decimal", "Binary", "HexaDecimal", "Octal"]
num_formats.each{|format| @cmbFrom.add_item format }
num_formats.each{|format| @cmbTo.add_item format }
Set Event Handler
main.add(btn = Jbutton.new("CONVERT"));
btn.add_action_listener do |evt|
   result.set_text(convert.upcase);
end
Set Event Handler cont.
main.add(btn = Jbutton.new("CONVERT"));
btn.add_action_listener do |evt|
   result.set_text(convert.upcase);
end




  def convert
     # Take the value of @input
     # Take formats form @cmbFrom and @cmbTo
     # Convert to required format
  end

end # end of class NumFormat
Yep! It's Done!!




https://github.com/ajaxray/jruby-swing
Java <=> JRuby Transformation
Java <=> JRuby Transformation
new Car(color, wheels)
Car.new color, wheels
Java <=> JRuby Transformation
JLabel.LEFT
JLabel::LEFT
Java <=> JRuby Transformation
Obj.longFuncName();
Obj.long_func_name
Java <=> JRuby Transformation
String[] options = {"all", "any"};
combo = new JcomboBox(options);


options.each{ |format|
    combo.add_item format
}
Java <=> JRuby Transformation
btn.addActionListener(new ActionListener() {
 public void actionPerformed(ActionEvent ae) {
          doSomething();
      }
});


btn.add_action_listener do |evt|
  do_something
end
Deployment




                             Warbler

http://rawr.rubyforge.org/   https://github.com/jruby/warbler
BTW, JRuby is not ONLY for Desktop
●
    It's just Ruby*
●
    Rails just works




    *Here are differences- https://github.com/jruby/jruby/wiki/DifferencesBetweenMriAndJruby
JRuby Frameworks
                   https://github.com/jruby/jruby/wiki/GUIFrameworks

●
    Cheri::Swing
●
    Limelight
●
    Monkeybars
●
    RSwing
●
    Rubeus
●
    Swiby
JRuby Frameworks
                   https://github.com/jruby/jruby/wiki/GUIFrameworks

●
    Cheri::Swing
●
    Limelight
●
    Monkeybars
●
    RSwing
●
    Rubeus
●
    Swiby

Frame.new("hello, world") do |frame|
  frame.default_close_operation = :exit_on_close
  frame.size = [200, 200]
  ...
Questions?
Developing cross platform desktop application with Ruby

Weitere Àhnliche Inhalte

Was ist angesagt?

Distributed Ruby and Rails
Distributed Ruby and RailsDistributed Ruby and Rails
Distributed Ruby and Rails
Wen-Tien Chang
 

Was ist angesagt? (20)

Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)Webpack & EcmaScript 6 (Webelement #32)
Webpack & EcmaScript 6 (Webelement #32)
 
Ruby
RubyRuby
Ruby
 
Ruby on Rails for beginners
Ruby on Rails for beginnersRuby on Rails for beginners
Ruby on Rails for beginners
 
Ruby Programming Language - Introduction
Ruby Programming Language - IntroductionRuby Programming Language - Introduction
Ruby Programming Language - Introduction
 
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory CourseRuby on Rails 101 - Presentation Slides for a Five Day Introductory Course
Ruby on Rails 101 - Presentation Slides for a Five Day Introductory Course
 
Distributed Ruby and Rails
Distributed Ruby and RailsDistributed Ruby and Rails
Distributed Ruby and Rails
 
RJB - another choice for Ruby and Java interoperability
RJB - another choice for Ruby and Java interoperabilityRJB - another choice for Ruby and Java interoperability
RJB - another choice for Ruby and Java interoperability
 
Web Development with Python and Django
Web Development with Python and DjangoWeb Development with Python and Django
Web Development with Python and Django
 
Introduction to Ruby
Introduction to RubyIntroduction to Ruby
Introduction to Ruby
 
Making CLI app in ruby
Making CLI app in rubyMaking CLI app in ruby
Making CLI app in ruby
 
Ruby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developerRuby on Rails survival guide of an aged Java developer
Ruby on Rails survival guide of an aged Java developer
 
Ruby Basics
Ruby BasicsRuby Basics
Ruby Basics
 
Introduction to rails
Introduction to railsIntroduction to rails
Introduction to rails
 
Getting Distributed (With Ruby On Rails)
Getting Distributed (With Ruby On Rails)Getting Distributed (With Ruby On Rails)
Getting Distributed (With Ruby On Rails)
 
Workshop 21: React Router
Workshop 21: React RouterWorkshop 21: React Router
Workshop 21: React Router
 
On Web Browsers
On Web BrowsersOn Web Browsers
On Web Browsers
 
End to-End CoffeeScript
End to-End CoffeeScriptEnd to-End CoffeeScript
End to-End CoffeeScript
 
Ruby on Rails Presentation
Ruby on Rails PresentationRuby on Rails Presentation
Ruby on Rails Presentation
 
Deploying Perl apps on dotCloud
Deploying Perl apps on dotCloudDeploying Perl apps on dotCloud
Deploying Perl apps on dotCloud
 
A bridge between php and ruby
A bridge between php and ruby A bridge between php and ruby
A bridge between php and ruby
 

Andere mochten auch

Rails Request & Middlewares
Rails Request & MiddlewaresRails Request & Middlewares
Rails Request & Middlewares
Santosh Wadghule
 
USQ_TSRPT(2)
USQ_TSRPT(2)USQ_TSRPT(2)
USQ_TSRPT(2)
Wayne Thoms
 
Enterprise Desktop Architecture 5 Year View
Enterprise Desktop Architecture   5 Year ViewEnterprise Desktop Architecture   5 Year View
Enterprise Desktop Architecture 5 Year View
Jeff Fisher
 
15 points to look for in your Enterprise Mobile Application Platform
15 points to look for in your Enterprise Mobile Application Platform15 points to look for in your Enterprise Mobile Application Platform
15 points to look for in your Enterprise Mobile Application Platform
CloudPact
 
Apperian 2016 Executive Enterprise Mobility Report_FINAL_20160217
Apperian 2016 Executive Enterprise Mobility Report_FINAL_20160217Apperian 2016 Executive Enterprise Mobility Report_FINAL_20160217
Apperian 2016 Executive Enterprise Mobility Report_FINAL_20160217
Sophie Jasson-Holt
 
Railsguide
RailsguideRailsguide
Railsguide
lanlau
 
Introducing Command Line Applications with Ruby
Introducing Command Line Applications with RubyIntroducing Command Line Applications with Ruby
Introducing Command Line Applications with Ruby
Nikhil Mungel
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
goldoraf
 
æ™șæ…§ćž‹èĄŒć‹•èŁçœźćź‰ć…šçźĄæŽ§è§Łæ±șæ–čæĄˆ
æ™șæ…§ćž‹èĄŒć‹•èŁçœźćź‰ć…šçźĄæŽ§è§Łæ±șæ–čæĄˆæ™șæ…§ćž‹èĄŒć‹•èŁçœźćź‰ć…šçźĄæŽ§è§Łæ±șæ–čæĄˆ
æ™șæ…§ćž‹èĄŒć‹•èŁçœźćź‰ć…šçźĄæŽ§è§Łæ±șæ–čæĄˆ
OFMKT
 
Sophos company-profile-cpna
Sophos company-profile-cpnaSophos company-profile-cpna
Sophos company-profile-cpna
aveiganeto
 
MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1
晟 æȈ
 
MVC for Desktop Application - Part 2
MVC for Desktop Application - Part  2MVC for Desktop Application - Part  2
MVC for Desktop Application - Part 2
晟 æȈ
 

Andere mochten auch (20)

Make GUI Apps with Shoes
Make GUI Apps with ShoesMake GUI Apps with Shoes
Make GUI Apps with Shoes
 
Rails Request & Middlewares
Rails Request & MiddlewaresRails Request & Middlewares
Rails Request & Middlewares
 
USQ_TSRPT(2)
USQ_TSRPT(2)USQ_TSRPT(2)
USQ_TSRPT(2)
 
JRuby in Java Projects
JRuby in Java ProjectsJRuby in Java Projects
JRuby in Java Projects
 
Sinatra
SinatraSinatra
Sinatra
 
Enterprise Desktop Architecture 5 Year View
Enterprise Desktop Architecture   5 Year ViewEnterprise Desktop Architecture   5 Year View
Enterprise Desktop Architecture 5 Year View
 
Command Line Applications with Ruby
Command Line Applications with RubyCommand Line Applications with Ruby
Command Line Applications with Ruby
 
Sinatra Rack And Middleware
Sinatra Rack And MiddlewareSinatra Rack And Middleware
Sinatra Rack And Middleware
 
15 points to look for in your Enterprise Mobile Application Platform
15 points to look for in your Enterprise Mobile Application Platform15 points to look for in your Enterprise Mobile Application Platform
15 points to look for in your Enterprise Mobile Application Platform
 
Slides with notes from Ruby Conf 2014 on using simple techniques to create sl...
Slides with notes from Ruby Conf 2014 on using simple techniques to create sl...Slides with notes from Ruby Conf 2014 on using simple techniques to create sl...
Slides with notes from Ruby Conf 2014 on using simple techniques to create sl...
 
Apperian 2016 Executive Enterprise Mobility Report_FINAL_20160217
Apperian 2016 Executive Enterprise Mobility Report_FINAL_20160217Apperian 2016 Executive Enterprise Mobility Report_FINAL_20160217
Apperian 2016 Executive Enterprise Mobility Report_FINAL_20160217
 
Railsguide
RailsguideRailsguide
Railsguide
 
Introducing Command Line Applications with Ruby
Introducing Command Line Applications with RubyIntroducing Command Line Applications with Ruby
Introducing Command Line Applications with Ruby
 
Sophos Mobile Control - Product Overview
Sophos Mobile Control - Product OverviewSophos Mobile Control - Product Overview
Sophos Mobile Control - Product Overview
 
Rich Desktop Applications
Rich Desktop ApplicationsRich Desktop Applications
Rich Desktop Applications
 
æ™șæ…§ćž‹èĄŒć‹•èŁçœźćź‰ć…šçźĄæŽ§è§Łæ±șæ–čæĄˆ
æ™șæ…§ćž‹èĄŒć‹•èŁçœźćź‰ć…šçźĄæŽ§è§Łæ±șæ–čæĄˆæ™șæ…§ćž‹èĄŒć‹•èŁçœźćź‰ć…šçźĄæŽ§è§Łæ±șæ–čæĄˆ
æ™șæ…§ćž‹èĄŒć‹•èŁçœźćź‰ć…šçźĄæŽ§è§Łæ±șæ–čæĄˆ
 
Sophos company-profile-cpna
Sophos company-profile-cpnaSophos company-profile-cpna
Sophos company-profile-cpna
 
Rails Request Response Lifecycle
Rails Request Response LifecycleRails Request Response Lifecycle
Rails Request Response Lifecycle
 
MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1MVC for Desktop Application - Part 1
MVC for Desktop Application - Part 1
 
MVC for Desktop Application - Part 2
MVC for Desktop Application - Part  2MVC for Desktop Application - Part  2
MVC for Desktop Application - Part 2
 

Ähnlich wie Developing cross platform desktop application with Ruby

JRuby - Enterprise 2.0
JRuby - Enterprise 2.0JRuby - Enterprise 2.0
JRuby - Enterprise 2.0
Jan Sifra
 
Ugo Cei Presentation
Ugo Cei PresentationUgo Cei Presentation
Ugo Cei Presentation
RubyOnRails_dude
 
Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-java
Keith Bennett
 
Why Node.js
Why Node.jsWhy Node.js
Why Node.js
guileen
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Kyle Drake
 

Ähnlich wie Developing cross platform desktop application with Ruby (20)

JRuby - Enterprise 2.0
JRuby - Enterprise 2.0JRuby - Enterprise 2.0
JRuby - Enterprise 2.0
 
Building native Android applications with Mirah and Pindah
Building native Android applications with Mirah and PindahBuilding native Android applications with Mirah and Pindah
Building native Android applications with Mirah and Pindah
 
Ugo Cei Presentation
Ugo Cei PresentationUgo Cei Presentation
Ugo Cei Presentation
 
Practical JRuby
Practical JRubyPractical JRuby
Practical JRuby
 
Jruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-javaJruby synergy-of-ruby-and-java
Jruby synergy-of-ruby-and-java
 
EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008EuRuKo JRuby Talk 2008
EuRuKo JRuby Talk 2008
 
Bitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRubyBitter Java, Sweeten with JRuby
Bitter Java, Sweeten with JRuby
 
The Enterprise Strikes Back
The Enterprise Strikes BackThe Enterprise Strikes Back
The Enterprise Strikes Back
 
"Xapi-lang For declarative code generation" By James Nelson
"Xapi-lang For declarative code generation" By James Nelson"Xapi-lang For declarative code generation" By James Nelson
"Xapi-lang For declarative code generation" By James Nelson
 
CoffeeScript: A beginner's presentation for beginners copy
CoffeeScript: A beginner's presentation for beginners copyCoffeeScript: A beginner's presentation for beginners copy
CoffeeScript: A beginner's presentation for beginners copy
 
Why Nodejs Guilin Shanghai
Why Nodejs Guilin ShanghaiWhy Nodejs Guilin Shanghai
Why Nodejs Guilin Shanghai
 
Why Node.js
Why Node.jsWhy Node.js
Why Node.js
 
Ruby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby MeRuby On Google App Engine 2nd Athens Ruby Me
Ruby On Google App Engine 2nd Athens Ruby Me
 
Hacking with ruby2ruby
Hacking with ruby2rubyHacking with ruby2ruby
Hacking with ruby2ruby
 
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::SynchronyFast, concurrent ruby web applications with EventMachine and EM::Synchrony
Fast, concurrent ruby web applications with EventMachine and EM::Synchrony
 
Monkeybars in the Manor
Monkeybars in the ManorMonkeybars in the Manor
Monkeybars in the Manor
 
JS Class 2016
JS Class 2016JS Class 2016
JS Class 2016
 
Middleware as Code with mruby
Middleware as Code with mrubyMiddleware as Code with mruby
Middleware as Code with mruby
 
JS class slides (2016)
JS class slides (2016)JS class slides (2016)
JS class slides (2016)
 
JavaScript Library Overview
JavaScript Library OverviewJavaScript Library Overview
JavaScript Library Overview
 

Mehr von Anis Ahmad

Mehr von Anis Ahmad (8)

Testing in Laravel Framework
Testing in Laravel FrameworkTesting in Laravel Framework
Testing in Laravel Framework
 
Writing Sensible Code
Writing Sensible CodeWriting Sensible Code
Writing Sensible Code
 
Revisiting SOLID Principles
Revisiting  SOLID Principles Revisiting  SOLID Principles
Revisiting SOLID Principles
 
VCS for Teamwork - GIT Workshop
VCS for Teamwork - GIT WorkshopVCS for Teamwork - GIT Workshop
VCS for Teamwork - GIT Workshop
 
Building Large Scale Javascript Application
Building Large Scale Javascript ApplicationBuilding Large Scale Javascript Application
Building Large Scale Javascript Application
 
Caching basics in PHP
Caching basics in PHPCaching basics in PHP
Caching basics in PHP
 
Freelancing; an alternate career
Freelancing; an alternate careerFreelancing; an alternate career
Freelancing; an alternate career
 
jQuery from the very beginning
jQuery from the very beginningjQuery from the very beginning
jQuery from the very beginning
 

KĂŒrzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

KĂŒrzlich hochgeladen (20)

MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
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
 
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
 
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, ...
 
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...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
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
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
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...
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
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​
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
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)
 
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 AmsterdamDEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
DEV meet-up UiPath Document Understanding May 7 2024 Amsterdam
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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...
 
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
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 

Developing cross platform desktop application with Ruby