Ruby object model at the Ruby drink-up of Sophia, January 2013

R
An introduction to Ruby's object
             model

    Riviera.rb – 08/01/2013
           Nicolas Bondoux
Overview
●   Introduction to module and classes
●   Singleton class; case of meta-classes
●   Tools for meta-programming
●   Using modules for extending objects: mixins
A simple class
class LinkedElement
  #constructor
                                          ●   A class definition
  def initialize(content,link)                  contains
    @content = content
    @link = link
  end
                                                  –   Instance methods
  # setter                                        –   Constants
  def content=(content)
    @content = content
  end
                                                  –   Class variables
  #getter
                                          ●   Instance variables are
  def content
    return @content
                                                prefixed by @; they
  end                                           are manipulated
  # automatic generation setter/getter:         through instance
  attr_accessor :link
end  
                                                methods
Class instances
irb(main):192:0> a = LinkedElement.new("a", nil)
=> #<LinkedElement:0x00000001b63b58 @content="a", @link=nil>

irb(main):193:0> b = LinkedElement.new("b",a)
=> #<LinkedElement:0x00000001b5daf0 @content="b", 
@link=#<LinkedElement:0x00000001b63b58 @content="a", @link=nil>>

irb(main):194:0> b.link()
=> #<LinkedElement:0x00000001b63b58 @content="a", @link=nil>

irb(main):195:0> b.@link
SyntaxError: (irb):195: syntax error, unexpected tIVAR
    from /usr/bin/irb:12:in `<main>'

irb(main):196:0> b.content
=> "b"

b.instance_variables
=> [:@content, :@link]

●   A class be instantiated using #new (class method)
●   Instance variables live within the instance, but are not
    directly accessible → need of getter and setters
Objects' equality
●   Objects comparison:
        –   == → true if the content of two objects
        –   .eql? → true if == and class of the two objects;
                 ● Used alongside with .hash for hash maps
        –   .equal? : true if the same instance on both sides
●   == and .eql? Must be provided by class implementation
Classes inheritance
class Toto                         irb(main):027:0* Toto.new.myNameIs
  def myNameIs                     => "My Name Is Toto."
    return "My Name Is #{name}."   irb(main):028:0> Titi.new.myNameIs
  end                              => "My Name Is Titi."
  def name
    "Toto"                         irb(main):030:0* t = Titi.new
  end                              => #<Titi:0x00000001d376c8>
end                                irb(main):035:0> t.class
                                   => Titi
class Titi < Toto                  irb(main):036:0> 
  def name                         t.class.superclass
    "Titi"                         => Toto
  end                              irb(main):037:0> t.is_a? Titi
end                                => true
                                   irb(main):038:0> t.is_a? Toto
                                   => true
                                   irb(main):039:0> Toto === t
                                   => true
                                   irb(main):040:0> Toto.superclass
                                   => Object
Self
●   “self” keyword represents the instance in which the code is
    executed
         –   inside a method definition , the instance on which
               method is defined
         –   Inside class/module definition: the class/module being
               defined
                         class TestSelf
                           puts self
                           def f
                             return self
                           end
                         end
                         # display TestSelf

                         t = TestSelf.new
                         t.f.equal? t
                         => true
Class methods and variables
class TestClassMethod
  #class variable
  @@a=0
  #class method
  def self.counter
    @@a=0
  end
  #instance method
  def putsSelf
    puts self
    @@a+=1
  end
end

●   Class are objects: class methods are their instance methods!
●   Class variables are prefixed with @@
●   Ruby magic: class variables from parent classes are
      accessible to child classes
●   Class variables are accessible anywhere in class definition
Classes methods: example
class LinkedElement
  class LinkedElementEnd
  end
  #class variable
  @@end = LinkedElementEnd.new

  #example of constant
  End = @@end
  #class method

  def self.end
    @@end
  end
end

irb(main):015:0* LinkedElement.end().equal? LinkedElement::End
=> true
irb(main):016:0> LinkedElement.class_variables
=> [:@@end]

irb(main):069:0>  a= LinkedElement.new("a", LinkedElement.end)
=> #<LinkedElement:0x00000001931df8 @content="a", 
@link=#<LinkedElement::LinkedElementEnd:0x0000000152e8c8>>

irb(main):070:0> b=LinkedElement.new("b",a)
=> #<LinkedElement:0x0000000192a8c8 @content="b", 
@link=#<LinkedElement:0x00000001931df8 @content="a", 
@link=#<LinkedElement::LinkedElementEnd:0x0000000152e8c8>>>
Adding methods to a class
●   Class definition can be extended anytime
●   Let's add a size method to our linked list:
      class LinkedElement
        def size
          @link.size + 1
        end
        class LinkedElementEnd
          def size
           0
          end
        end
      end

      irb(main):081:0> a.size
      => 1
      irb(main):082:0> b.size
      => 2
Structs
●   Struct.new allow to dynamically create Classes, with getter
      and setters
      irb(main):008:0> MyClass = Struct.new(:a,:b, :c)
      => MyClass
      irb(main):009:0> m = MyClass.new(1,10)
      => m = MyClass.new(1,10)

      irb(main):011:0> m.a=2
      => 2

      irb(main):013:0> m.to_a
      => [2, 10, nil]


●   Instance of struct have, among others .eql?, .equal?, .hash
      methods defined !
●   Very useful to quickly define records, keys …
●   Structs can then be inherited from/extended like any classes
Modules
●   Module is a parent type of Class;
         –   A module is an instance of Module
●   Modules are like classes, except that
         –   They cannot be instantiated
         –   No inheritance: they cannot have parent or child
●   Still, they are objects:
         –   They have instance variables, (class) methods
●   And they also have
         –   class variables
         –   and instance methods → used for the mixins
●   Modules are useful for namespaces
Modules (2)
module M1
  #constant:
  C=1

  def self.f
    "f1; self is #{self}"
  end
end

module M2
  def self.f
    "f2; self is #{self}"
  end
end

irb(main):026:0* M1.f
=> "f1; self is M1"
irb(main):028:0* M2.f
=> "f2; self is M2"
irb(main):033:0> M1::C
=> 1
A very simplified diagram


                  Object




           MyParentClass   Module   MyModule


Instance         MyClass   Class



   .class
   .superclass
Extending instances:
●   We have already seen that class methods of a class A are
    instance methods specific to the object A
           –    It is possible to add methods to instances!
        a="5"

        def a.mult(x)
           "#{self.to_i*x}"
        znd

        irb(main):096:0* a.mult(10)
        => "50"


●    Where is stored “mult” Method ? In the Singleton class !
    irb(main):103:0> a.singleton_class
    => #<Class:#<String:0x000000018ec7a8>>
    irb(main):104:0> a.singleton_class.ancestors
    => [String, Comparable, Object, Kernel, BasicObject]
    irb(main):105:0> a.singleton_class.superclass
    => String
What are singleton classes ?
●   One instance has its own singleton
●   Those are anonymous and invisible classes, inserted at the
    bottom of the class hierarchy
●   They are used to hold methods that are specific to an instance
                                  Object




                 class            String



         a                         (a)
                singleton_class
Singleton classes of classes: meta-
                   classes
●   Meta-classes: the singleton classes of methods
         –   This is where class methods are stored!
●   Meta-classes magic:
         –   when looking for a class methods ruby search in the
              meta-classes of all the inheritance chain!
         –   This is because meta-classes inheritance scheme is
               parallel to class inheritance scheme
Meta-classes: a diagram


                   Object         Class




             MyParentClass     (MyParentClass)


                  MyClass         (MyClass)


Instance          (Instance)

       .singleton_class
       .superclass
Extending the singleton classes
class Toto
  #instance method of Toto
                                                 # Singleton class can also be 
  def f
                                                 accessed explicitly
  end
                                                 class << Toto
                                                   def h
  #class method of Toto
                                                     return self
  def self.g
                                                   end
  end
                                                 end
end

#class method of Toto
                                                 class Toto
def Toto.g
                                                   class << self
end
                                                     def i1
                                                     end
# ­> def x.g  .... ­> add an instance method to 
                                                     
the singleton class of x !
                                                     def i2
                                                     end
                                                   end
                                                 end
                                                 # i1 and i2 are class methods of 
                                                 Toto !!!
instance_eval/instance_exec
●   instance_eval allow to execute code in the context of an
       instance;
         –   Ruby magic: self represents the instance, but methods
              are added to the singleton class!
     class TestInstanceEval
       def initialize
         @a=5
       end
     end
     b=5

     irb(main):189:0> t.instance_eval "@a"
     => 5
     irb(main):190:0* t.instance_eval "def f; puts @a+#{b};end"
     => nil
     irb(main):191:0> t.f
     10
Mixins
●   Mixins are a way to add properties to an object
●   They are modules referenced by classes
●   Instance methods of the module becomes available to
    instances of the class
●   Include: the module becomes an included module of the Class
         –   the instance methods of an module become instance
               methods of the Class → used to extend classes
●   Extend: the module becomes an included module of the
    singleton of the class → allow to extends objects, add class
    methods to classes ...
Mixins: examples
module AppendModule
  def append(x)
    return LinkedElement.new(x,self)
  end
end

#add append method to LinkedElement and LinkedElementEnd

class LinkedElement
  #add append as instance method of LinkedElement
  include AppendModule
  class LinkedElementEnd
    include AppendModule
  end
end

irb(main):268:0> l = LinkedElement::End.append("z").append("y").append("x")
=> #<LinkedElement:0x00000001d18138 @content="x", 
@link=#<LinkedElement:0x00000001d18188 @content="y", 
@link=#<LinkedElement:0x00000001d181d8 @content="z", 
@link=#<LinkedElement::LinkedElementEnd:0x00000001f04f78>>>>

irb(main):269:0> l.size
=> 3

irb(main):270:0> LinkedElement.included_modules
=> [AppendModule, Kernel]
Any questions?
1 of 23

Recommended

The Ruby Object Model by Rafael Magana by
The Ruby Object Model by Rafael MaganaThe Ruby Object Model by Rafael Magana
The Ruby Object Model by Rafael MaganaRafael Magana
2.4K views24 slides
Advance OOP concepts in Python by
Advance OOP concepts in PythonAdvance OOP concepts in Python
Advance OOP concepts in PythonSujith Kumar
19.3K views23 slides
Ruby object model by
Ruby object modelRuby object model
Ruby object modelChamnap Chhorn
3.5K views100 slides
Ruby — An introduction by
Ruby — An introductionRuby — An introduction
Ruby — An introductionGonçalo Silva
1.4K views76 slides
Lightning talk by
Lightning talkLightning talk
Lightning talknpalaniuk
400 views18 slides
Chapter 05 classes and objects by
Chapter 05 classes and objectsChapter 05 classes and objects
Chapter 05 classes and objectspraveenjigajinni
2.8K views67 slides

More Related Content

What's hot

Unit 2-data types,Variables,Operators,Conitionals,loops and arrays by
Unit 2-data types,Variables,Operators,Conitionals,loops and arraysUnit 2-data types,Variables,Operators,Conitionals,loops and arrays
Unit 2-data types,Variables,Operators,Conitionals,loops and arraysDevaKumari Vijay
288 views54 slides
First fare 2011 frc-java-introduction by
First fare 2011 frc-java-introductionFirst fare 2011 frc-java-introduction
First fare 2011 frc-java-introductionOregon FIRST Robotics
1.3K views21 slides
Generics in java by
Generics in javaGenerics in java
Generics in javasuraj pandey
1K views43 slides
Java Basic day-2 by
Java Basic day-2Java Basic day-2
Java Basic day-2Kamlesh Singh
676 views15 slides
Java by
JavaJava
JavaRaghu nath
204 views27 slides
Introduction to java by
Introduction to javaIntroduction to java
Introduction to javarishi ram khanal
29 views28 slides

What's hot(20)

Unit 2-data types,Variables,Operators,Conitionals,loops and arrays by DevaKumari Vijay
Unit 2-data types,Variables,Operators,Conitionals,loops and arraysUnit 2-data types,Variables,Operators,Conitionals,loops and arrays
Unit 2-data types,Variables,Operators,Conitionals,loops and arrays
DevaKumari Vijay288 views
Java: Objects and Object References by Tareq Hasan
Java: Objects and Object ReferencesJava: Objects and Object References
Java: Objects and Object References
Tareq Hasan17.9K views
The ruby programming language by praveen0202
The ruby programming languageThe ruby programming language
The ruby programming language
praveen0202783 views
‫Object Oriented Programming_Lecture 3 by Mahmoud Alfarra
‫Object Oriented Programming_Lecture 3‫Object Oriented Programming_Lecture 3
‫Object Oriented Programming_Lecture 3
Mahmoud Alfarra641 views
Chapter 02: Classes Objects and Methods Java by Tushar B Kute by Tushar B Kute
Chapter 02: Classes Objects and Methods Java by Tushar B KuteChapter 02: Classes Objects and Methods Java by Tushar B Kute
Chapter 02: Classes Objects and Methods Java by Tushar B Kute
Tushar B Kute8.4K views
C# Summer course - Lecture 3 by mohamedsamyali
C# Summer course - Lecture 3C# Summer course - Lecture 3
C# Summer course - Lecture 3
mohamedsamyali523 views
Chapter 01 Introduction to Java by Tushar B Kute by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B KuteChapter 01 Introduction to Java by Tushar B Kute
Chapter 01 Introduction to Java by Tushar B Kute
Tushar B Kute3K views
NSCoder Swift - An Introduction to Swift by Andreas Blick
NSCoder Swift - An Introduction to SwiftNSCoder Swift - An Introduction to Swift
NSCoder Swift - An Introduction to Swift
Andreas Blick5K views
Object Oriented Programming_Lecture 2 by Mahmoud Alfarra
Object Oriented Programming_Lecture 2Object Oriented Programming_Lecture 2
Object Oriented Programming_Lecture 2
Mahmoud Alfarra727 views

Viewers also liked

Pry at the Ruby Drink-up of Sophia, February 2012 by
Pry at the Ruby Drink-up of Sophia, February 2012Pry at the Ruby Drink-up of Sophia, February 2012
Pry at the Ruby Drink-up of Sophia, February 2012rivierarb
1.5K views13 slides
DRb at the Ruby Drink-up of Sophia, December 2011 by
DRb at the Ruby Drink-up of Sophia, December 2011DRb at the Ruby Drink-up of Sophia, December 2011
DRb at the Ruby Drink-up of Sophia, December 2011rivierarb
1.2K views17 slides
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013 by
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013Ruby and Twitter at the Ruby drink-up of Sophia, January 2013
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013rivierarb
1.5K views11 slides
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012 by
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012rivierarb
1.8K views23 slides
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013 by
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013Ruby 2.0 at the Ruby drink-up of Sophia, February 2013
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013rivierarb
1.3K views15 slides
Ruby and Docker on Rails by
Ruby and Docker on RailsRuby and Docker on Rails
Ruby and Docker on RailsMuriel Salvan
6.3K views62 slides

Viewers also liked(10)

Pry at the Ruby Drink-up of Sophia, February 2012 by rivierarb
Pry at the Ruby Drink-up of Sophia, February 2012Pry at the Ruby Drink-up of Sophia, February 2012
Pry at the Ruby Drink-up of Sophia, February 2012
rivierarb1.5K views
DRb at the Ruby Drink-up of Sophia, December 2011 by rivierarb
DRb at the Ruby Drink-up of Sophia, December 2011DRb at the Ruby Drink-up of Sophia, December 2011
DRb at the Ruby Drink-up of Sophia, December 2011
rivierarb1.2K views
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013 by rivierarb
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013Ruby and Twitter at the Ruby drink-up of Sophia, January 2013
Ruby and Twitter at the Ruby drink-up of Sophia, January 2013
rivierarb1.5K views
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012 by rivierarb
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012
Piloting processes through std IO at the Ruby Drink-up of Sophia, January 2012
rivierarb1.8K views
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013 by rivierarb
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013Ruby 2.0 at the Ruby drink-up of Sophia, February 2013
Ruby 2.0 at the Ruby drink-up of Sophia, February 2013
rivierarb1.3K views
Ruby and Docker on Rails by Muriel Salvan
Ruby and Docker on RailsRuby and Docker on Rails
Ruby and Docker on Rails
Muriel Salvan6.3K views
Ruby C extensions at the Ruby drink-up of Sophia, April 2012 by rivierarb
Ruby C extensions at the Ruby drink-up of Sophia, April 2012Ruby C extensions at the Ruby drink-up of Sophia, April 2012
Ruby C extensions at the Ruby drink-up of Sophia, April 2012
rivierarb2.4K views
Quines—Programming your way back to where you were by Jean-Baptiste Mazon
Quines—Programming your way back to where you wereQuines—Programming your way back to where you were
Quines—Programming your way back to where you were

Similar to Ruby object model at the Ruby drink-up of Sophia, January 2013

Presentation 3rd by
Presentation 3rdPresentation 3rd
Presentation 3rdConnex
138 views39 slides
Object Oriented Programming.pptx by
Object Oriented Programming.pptxObject Oriented Programming.pptx
Object Oriented Programming.pptxSAICHARANREDDYN
33 views36 slides
Introduction to Python - Part Three by
Introduction to Python - Part ThreeIntroduction to Python - Part Three
Introduction to Python - Part Threeamiable_indian
4.8K views52 slides
Metaprogramming Primer (Part 1) by
Metaprogramming Primer (Part 1)Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)Christopher Haupt
219 views43 slides
Ruby object model - Understanding of object play role for ruby by
Ruby object model - Understanding of object play role for rubyRuby object model - Understanding of object play role for ruby
Ruby object model - Understanding of object play role for rubyTushar Pal
149 views24 slides
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲ by
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲Mohammad Reza Kamalifard
523 views27 slides

Similar to Ruby object model at the Ruby drink-up of Sophia, January 2013(20)

Presentation 3rd by Connex
Presentation 3rdPresentation 3rd
Presentation 3rd
Connex138 views
Introduction to Python - Part Three by amiable_indian
Introduction to Python - Part ThreeIntroduction to Python - Part Three
Introduction to Python - Part Three
amiable_indian4.8K views
Ruby object model - Understanding of object play role for ruby by Tushar Pal
Ruby object model - Understanding of object play role for rubyRuby object model - Understanding of object play role for ruby
Ruby object model - Understanding of object play role for ruby
Tushar Pal149 views
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲ by Mohammad Reza Kamalifard
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
جلسه هفتم پایتون برای هکر های قانونی دوره مقدماتی پاییز ۹۲
The Next Generation MOP, Jochen Theodorou, GR8Conf 2013 by GR8Conf
The Next Generation MOP, Jochen Theodorou, GR8Conf 2013 The Next Generation MOP, Jochen Theodorou, GR8Conf 2013
The Next Generation MOP, Jochen Theodorou, GR8Conf 2013
GR8Conf1.1K views
Active Support Core Extensions (1) by RORLAB
Active Support Core Extensions (1)Active Support Core Extensions (1)
Active Support Core Extensions (1)
RORLAB721 views
Presentation 4th by Connex
Presentation 4thPresentation 4th
Presentation 4th
Connex118 views
Reusable Ruby • Rt 9 Ruby Group • Jun 2012 by skinandbones
Reusable Ruby • Rt 9 Ruby Group • Jun 2012Reusable Ruby • Rt 9 Ruby Group • Jun 2012
Reusable Ruby • Rt 9 Ruby Group • Jun 2012
skinandbones470 views
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA by Maulik Borsaniya
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYAPYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
PYTHON-Chapter 3-Classes and Object-oriented Programming: MAULIK BORSANIYA
Maulik Borsaniya2.5K views
Object oriented programming by MH Abid
Object oriented programmingObject oriented programming
Object oriented programming
MH Abid655 views
The Dark Art of Rails Plugins (2008) by lazyatom
The Dark Art of Rails Plugins (2008)The Dark Art of Rails Plugins (2008)
The Dark Art of Rails Plugins (2008)
lazyatom47 views

Recently uploaded

SAP Automation Using Bar Code and FIORI.pdf by
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdfVirendra Rai, PMP
19 views38 slides
Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica... by
Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica...Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica...
Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica...NUS-ISS
16 views28 slides
STPI OctaNE CoE Brochure.pdf by
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdfmadhurjyapb
12 views1 slide
Uni Systems for Power Platform.pptx by
Uni Systems for Power Platform.pptxUni Systems for Power Platform.pptx
Uni Systems for Power Platform.pptxUni Systems S.M.S.A.
50 views21 slides
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV by
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTVSplunk
88 views20 slides
[2023] Putting the R! in R&D.pdf by
[2023] Putting the R! in R&D.pdf[2023] Putting the R! in R&D.pdf
[2023] Putting the R! in R&D.pdfEleanor McHugh
38 views127 slides

Recently uploaded(20)

SAP Automation Using Bar Code and FIORI.pdf by Virendra Rai, PMP
SAP Automation Using Bar Code and FIORI.pdfSAP Automation Using Bar Code and FIORI.pdf
SAP Automation Using Bar Code and FIORI.pdf
Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica... by NUS-ISS
Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica...Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica...
Emerging & Future Technology - How to Prepare for the Next 10 Years of Radica...
NUS-ISS16 views
STPI OctaNE CoE Brochure.pdf by madhurjyapb
STPI OctaNE CoE Brochure.pdfSTPI OctaNE CoE Brochure.pdf
STPI OctaNE CoE Brochure.pdf
madhurjyapb12 views
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV by Splunk
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
.conf Go 2023 - How KPN drives Customer Satisfaction on IPTV
Splunk88 views
[2023] Putting the R! in R&D.pdf by Eleanor McHugh
[2023] Putting the R! in R&D.pdf[2023] Putting the R! in R&D.pdf
[2023] Putting the R! in R&D.pdf
Eleanor McHugh38 views
Igniting Next Level Productivity with AI-Infused Data Integration Workflows by Safe Software
Igniting Next Level Productivity with AI-Infused Data Integration Workflows Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Safe Software225 views
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze by NUS-ISS
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng TszeDigital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze
Digital Product-Centric Enterprise and Enterprise Architecture - Tan Eng Tsze
NUS-ISS19 views
RADIUS-Omnichannel Interaction System by RADIUS
RADIUS-Omnichannel Interaction SystemRADIUS-Omnichannel Interaction System
RADIUS-Omnichannel Interaction System
RADIUS15 views
AMAZON PRODUCT RESEARCH.pdf by JerikkLaureta
AMAZON PRODUCT RESEARCH.pdfAMAZON PRODUCT RESEARCH.pdf
AMAZON PRODUCT RESEARCH.pdf
JerikkLaureta15 views
Five Things You SHOULD Know About Postman by Postman
Five Things You SHOULD Know About PostmanFive Things You SHOULD Know About Postman
Five Things You SHOULD Know About Postman
Postman27 views
Black and White Modern Science Presentation.pptx by maryamkhalid2916
Black and White Modern Science Presentation.pptxBlack and White Modern Science Presentation.pptx
Black and White Modern Science Presentation.pptx
maryamkhalid291614 views
The details of description: Techniques, tips, and tangents on alternative tex... by BookNet Canada
The details of description: Techniques, tips, and tangents on alternative tex...The details of description: Techniques, tips, and tangents on alternative tex...
The details of description: Techniques, tips, and tangents on alternative tex...
BookNet Canada121 views
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen... by NUS-ISS
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
Upskilling the Evolving Workforce with Digital Fluency for Tomorrow's Challen...
NUS-ISS28 views
Future of Learning - Yap Aye Wee.pdf by NUS-ISS
Future of Learning - Yap Aye Wee.pdfFuture of Learning - Yap Aye Wee.pdf
Future of Learning - Yap Aye Wee.pdf
NUS-ISS41 views
Web Dev - 1 PPT.pdf by gdsczhcet
Web Dev - 1 PPT.pdfWeb Dev - 1 PPT.pdf
Web Dev - 1 PPT.pdf
gdsczhcet55 views
AI: mind, matter, meaning, metaphors, being, becoming, life values by Twain Liu 刘秋艳
AI: mind, matter, meaning, metaphors, being, becoming, life valuesAI: mind, matter, meaning, metaphors, being, becoming, life values
AI: mind, matter, meaning, metaphors, being, becoming, life values

Ruby object model at the Ruby drink-up of Sophia, January 2013