$30 off During Our Annual Pro Sale. View Details »

Ruby'i Tanıyalım

Ruby'i Tanıyalım

17 OCAK RUBY VE RUBY ON RAİLS İLE TANIŞMA ETKİNLİĞİ için yapmış olduğum Ruby tanıtım sunumu.

Uğur Özyılmazel

January 17, 2015
Tweet

More Decks by Uğur Özyılmazel

Other Decks in Programming

Transcript

  1. View Slide

  2. Uğur "vigo" Özyılmazel
    vigobronx vigo

    View Slide

  3. webboxio
    http://webbox.io

    View Slide

  4. PROGRAMLAMA DİLİ

    View Slide

  5. View Slide

  6. Ruby, programcıları
    mutlu etmek üzere
    tasarlanmıştır!
    - Matz

    View Slide

  7. View Slide

  8. TÜRKÇE BİLİYOR!

    View Slide

  9. şehirler = %w[İstanbul Ankara Viyana Paris]
    gittiğim_şehirler = %w[İstanbul Viyana]
    puts "Gitmem gereken şehirler", şehirler - gittiğim_şehirler
    Gitmem gereken şehirler
    Ankara
    Paris

    View Slide

  10. Perl'den güçlü

    View Slide

  11. python'dan daha
    object orıented

    View Slide

  12. Herşey : nesne

    View Slide

  13. 5.class # => Fixnum
    5.class.superclass # => Integer
    5.class.superclass.superclass # => Numeric
    5.class.superclass.superclass.superclass # => Object
    5.class.superclass.superclass.superclass.superclass # => BasicObject

    View Slide

  14. Fixnum
    Integer
    Numeric
    Object
    Basic Object

    View Slide

  15. 5.methods # => [:to_s, :inspect, :-@, :+, :-, :*, :/, :div, :
    %, :modulo, :divmod, :fdiv, :**, :abs, :magnitude, :==, :===, :<=>, :
    >, :>=, :<, :<=, :~, :&, :|, :^, :
    [], :<<, :>>, :to_f, :size, :bit_length, :zero?, :odd?, :even?, :succ
    , :integer?, :upto, :downto, :times, :next, :pred, :chr, :ord, :to_i,
    :to_int, :floor, :ceil, :truncate, :round, :gcd, :lcm, :gcdlcm, :nume
    rator, :denominator, :to_r, :rationalize, :singleton_method_added, :c
    oerce, :i, :
    +@, :eql?, :remainder, :real?, :nonzero?, :step, :quo, :to_c, :real,
    :imaginary, :imag, :abs2, :arg, :angle, :phase, :rectangular, :rect,
    :polar, :conjugate, :conj, :between?, :nil?, :=~, :!~, :hash, :class,
    :singleton_class, :clone, :dup, :taint, :tainted?, :untaint, :untrust
    , :untrusted?, :trust, :freeze, :frozen?, :methods, :singleton_method
    s, :protected_methods, :private_methods, :public_methods, :instance_v
    ariables, :instance_variable_get, :instance_variable_set, :instance_v
    ariable_defined?, :remove_instance_variable, :instance_of?, :kind_of?
    , :is_a?, :tap, :send, :public_send, :respond_to?, :extend, :display,
    :method, :public_method, :singleton_method, :define_singleton_method,
    :object_id, :to_enum, :enum_for, :equal?, :!, :!
    =, :instance_eval, :instance_exec, :__send__, :__id__]

    View Slide

  16. TÜM SINIFLAR AÇIKTIR!

    View Slide

  17. class Fixnum
    def kere(n)
    self * n
    end
    end
    5.kere(5) # => 25
    5.kere(5).kere(2) # => 50

    View Slide

  18. class Fixnum
    def gün
    self * 24 * 60 * 60
    end
    def önce
    Time.now - self
    end
    def sonra
    Time.now + self
    end
    end
    Time.now # => 2015-01-12 12:30:37 +0200
    5.gün.önce # => 2015-01-07 12:30:37 +0200
    1.gün.sonra # => 2015-01-13 12:30:37 +0200

    View Slide

  19. PHP?

    View Slide

  20. konuşma dİlİne benzer

    View Slide

  21. 5.times do |i|
    puts "Ruby’i seviyorum, i = #{i}" if i > 2
    end
    # Ruby’i seviyorum, i = 3
    # Ruby’i seviyorum, i = 4

    View Slide

  22. meals = %w[Pizza Döner Kebab]
    print "Let’s eat here!" unless meals.include? "Soup"
    menü'de çorba yoksa
    yemeğİ burada YİYELİM!

    View Slide

  23. KOD ?

    View Slide

  24. varıable
    merhaba = "Dünya" # Değişken
    @merhaba # Instance Variable
    @@merhaba # Class Variable
    $merhaba # Global Variable
    MERHABA # Constant

    View Slide

  25. ARRAY
    [] # => []
    [1, "Merhaba", 2]
    # => [1, "Merhaba", 2]
    [[1, 2], ["Merhaba", "Dünya"]]
    # => [[1, 2], ["Merhaba", "Dünya"]]

    View Slide

  26. hash
    {} # => {}
    {:foo => "bar"} # => {:foo=>"bar"} # Eski
    {foo: "bar"} # => {:foo=>"bar"} # Yeni

    View Slide

  27. parantez?
    def merhaba kullanıcı
    "Merhaba #{kullanıcı}"
    end
    merhaba "vigo" # => "Merhaba vigo"

    View Slide

  28. SORU İŞARETİ
    [].empty? # => true
    ["vigo", "ezel"].include? "vigo" # => true
    user.admin? # => false

    View Slide

  29. ÜNLEM İŞARETİ
    isim = "vigo"
    isim.reverse # => "ogiv"
    isim # => "vigo"
    isim.reverse! # => "ogiv"
    isim # => "ogiv"

    View Slide

  30. zİNCİRLEME METHODLAR
    "vigo".reverse.reverse # => "vigo"
    ["v", "i", "g", "o"].join.reverse.split(//).join.reverse
    # => "vigo"

    View Slide

  31. İterasyon
    [1, "merhaba", 2, "dünya"].each do |eleman|
    puts eleman
    end
    [1, "merhaba", 2, "dünya"].each {|eleman| puts eleman}
    # 1
    # merhaba
    # 2
    # dünya

    View Slide

  32. İterasyon
    [1, 2, 3, 4, 5].select{|number| number.even?}
    # => [2, 4]
    [1, 2, 3, 4, 5].inject{|sum, number| sum + number}
    # => 15
    [1, 2, 3, 4, 5].map{|number| number * 2}
    # => [2, 4, 6, 8, 10]

    View Slide

  33. class
    class Person
    attr_accessor :age
    end
    vigo = Person.new
    vigo # => #
    vigo.age = 43
    vigo # => #
    vigo.age # => 43

    View Slide

  34. class
    class Person
    attr_accessor :age # Getter & Setter
    def initialize(name)
    @name = name
    end
    def greet
    "Hello #{@name}"
    end
    end
    vigo = Person.new "Uğur"
    vigo.age = 43
    vigo # => #
    vigo.greet # => "Hello Uğur"

    View Slide

  35. class
    class Person
    def initialize(name)
    @name = name
    end
    def age=(value)
    @age = value
    end
    def age
    @age
    end
    def greet
    "Hello #{@name}"
    end
    end
    vigo = Person.new "Uğur"
    vigo.age = 43
    Getter
    Setter
    attr_accessor :age
    }

    View Slide

  36. class
    class Person
    def is_human?
    true
    end
    end
    class Cyborg < Person
    def is_human?
    false
    end
    end
    vigo = Person.new # => #
    vigo.is_human? # => true
    t800 = Cyborg.new # => #
    t800.is_human? # => false

    View Slide

  37. module + MIXIN
    module Greeter
    def say_hello
    "Hello #{@name}"
    end
    end
    class Person
    include Greeter
    def initialize(name)
    @name = name
    end
    end
    vigo = Person.new "Uğur"
    vigo.say_hello # => "Hello Uğur"

    View Slide

  38. hazırım!

    View Slide

  39. İLERİ SEVİYE KONULAR
    Meta Programming
    Monkey Patching
    Block & Proc & Lambda
    Functional Programming

    View Slide

  40. kaynaklar
    http://www.ruby-doc.org/
    http://vigo.gitbooks.io/ruby-101/
    http://tryruby.org/
    http://rubykoans.com/
    https://rubymonk.com/
    https://www.ruby-lang.org/en/documentation/quickstart/
    https://www.ruby-lang.org/en/documentation/ruby-from-other-languages/

    View Slide

  41. fotoğraflar
    http://www.sitepoint.com/
    https://500px.com/photo/72621187/let-me-fly-by-kshitij-bhardwaj
    http://www.gratisography.com/

    View Slide