Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby for Starter

Ruby for Starter

高見龍

March 23, 2013
Tweet

More Decks by 高見龍

Other Decks in Programming

Transcript

  1. Ruby Starter
    eddie@fju

    View Slide

  2. View Slide

  3. current status

    View Slide

  4. 80% iOS app, 20% Ruby/Rails

    View Slide

  5. What I want?

    View Slide

  6. Problem Solving

    View Slide

  7. History

    View Slide

  8. まつもと ゆきひろ (Matz)

    View Slide

  9. first released at 1995

    View Slide

  10. 2.0 released at 2013

    View Slide

  11. View Slide

  12. Why Ruby?
    free, open source, easy to learn

    View Slide

  13. Ruby != Rails

    View Slide

  14. Happy, and Fun

    View Slide

  15. Rubies
    CRuby(MRI), REE, mRuby, JRuby, IronRuby,
    Rubinius..etc

    View Slide

  16. Version
    1.8, 1.9, 2.0

    View Slide

  17. Ruby 1.8 has no future

    View Slide

  18. RVM
    Ruby Version Manager
    https://rvm.io/

    View Slide

  19. Editors
    Vim, Emacs, TextMate, Sublime Text... etc

    View Slide

  20. git

    View Slide

  21. coding style
    https://github.com/styleguide/ruby

    View Slide

  22. Variables and Constants

    View Slide

  23. local variable
    variable

    View Slide

  24. global variable
    $variable

    View Slide

  25. instance variable
    @variable

    View Slide

  26. class variable
    @@variable

    View Slide

  27. virtual variable
    true, false, self, nil

    View Slide

  28. variable assignment
    a = 1
    x, y, z = 1, 2, 3

    View Slide

  29. Constant
    begins with a capital letter, and it can be changed

    View Slide

  30. Reserved word and Keyword

    View Slide

  31. Logic and Flow Control

    View Slide

  32. only false and nil are false

    View Slide

  33. true v.s. TrueClass
    false v.s. FalseClass
    nil v.s. NilClass

    View Slide

  34. if..elsif..end

    View Slide

  35. unless = if not

    View Slide

  36. if modifier

    View Slide

  37. case .. when..

    View Slide

  38. BEGIN{} and END{}

    View Slide

  39. a = true ? 'a' : 'b'

    View Slide

  40. a ||= 'a'

    View Slide

  41. Comment
    # single line

    View Slide

  42. Comment
    =begin .. =end

    View Slide

  43. Loop and Iteration

    View Slide

  44. for.. in..

    View Slide

  45. while .. end

    View Slide

  46. until .. end

    View Slide

  47. until = while not

    View Slide

  48. times

    View Slide

  49. upto, downto

    View Slide

  50. each, each_with_index

    View Slide

  51. Block

    View Slide

  52. Proc

    View Slide

  53. my_square = Proc.new { | x | x ** 2 }
    my_square.call(10) # 100
    my_square[10] # 100

    View Slide

  54. lambda, ->

    View Slide

  55. my_lambda = lambda { | x | x ** 2 }
    # new style in 1.9
    my_lambda = -> x { x ** 2 }
    # how to call a lambda?
    my_lambda.call(10)
    my_lambda[10]

    View Slide

  56. Proc v.s. lambda

    View Slide

  57. def proc_test
    puts "hello"
    my_proc = Proc.new { return 1 }
    my_proc.call
    puts "ruby"
    end
    def lambda_test
    puts "hello"
    my_lambda = lambda { return 1 }
    my_lambda.call
    puts "ruby"
    end

    View Slide

  58. {} v.s. do..end
    http://blog.eddie.com.tw/2011/06/03/do-end-vs-braces/

    View Slide

  59. Number

    View Slide

  60. Fixnum and Bignum

    View Slide

  61. 10 / 3

    View Slide

  62. String
    http://ruby-doc.org/core-1.9.2/String.html

    View Slide

  63. single and double quotes

    View Slide

  64. %q v.s. %Q

    View Slide

  65. "%s" % "eddie"

    View Slide

  66. string interpolation

    View Slide

  67. Array
    http://ruby-doc.org/core-1.9.2/Array.html

    View Slide

  68. Array.new v.s. []

    View Slide

  69. %w

    View Slide

  70. Hash
    http://ruby-doc.org/core-1.9.2/Hash.html

    View Slide

  71. Hash.new v.s {}

    View Slide

  72. a = { :name => 'eddie' }
    a = { name: 'eddie' }

    View Slide

  73. Range
    http://ruby-doc.org/core-1.9.2/Range.html

    View Slide

  74. (1..10) v.s. (1...10)

    View Slide

  75. Methods

    View Slide

  76. def method_name(param)
    ...
    end

    View Slide

  77. parentheses can be omitted

    View Slide

  78. ? and !

    View Slide

  79. return value

    View Slide

  80. Singleton Method

    View Slide

  81. class Cat
    def walk
    puts "I'm walking"
    end
    end
    cat = Cat.new
    def cat.fly
    puts "I can fly"
    end
    cat.fly

    View Slide

  82. Method Missing

    View Slide

  83. def method_missing(method_name)
    puts "method: #{method_name} is called!"
    end
    [1, 2, 3, 4].hello

    View Slide

  84. Exception Handling
    begin .. rescue.. else.. ensure.. end

    View Slide

  85. def open_my_file(file_name)
    File.open file_name do |f|
    puts f.read
    end
    end
    begin
    open_my_file("block_demo.r")
    rescue => e
    puts e
    else
    puts "it's working good!"
    ensure
    puts "this must be executed, no matter what"
    end

    View Slide

  86. Object-Oriented Programming

    View Slide

  87. everything in Ruby is an Object

    View Slide

  88. object = state+ behavior

    View Slide

  89. top class = Object
    top class would be BasicObject in Ruby 1.9

    View Slide

  90. class ClassName < ParentClass
    ...
    end

    View Slide

  91. Naming Convention

    View Slide

  92. initialize

    View Slide

  93. ClassName.new

    View Slide

  94. self = current object

    View Slide

  95. instance and class variable

    View Slide

  96. instance and class method

    View Slide

  97. public, protected and private method

    View Slide

  98. getter and setter

    View Slide

  99. attr_reader, attr_writer and
    attr_accessor

    View Slide

  100. Open Class

    View Slide

  101. Module

    View Slide

  102. module ModuleName
    ...
    end

    View Slide

  103. module has no inheritance

    View Slide

  104. module has no instance

    View Slide

  105. Naming Convention

    View Slide

  106. require v.s. load

    View Slide

  107. Mixin

    View Slide

  108. Ruby is single inheritance

    View Slide

  109. Duck Typing

    View Slide

  110. include v.s. extend

    View Slide

  111. Gem

    View Slide

  112. gem install PACKAGE_NAME

    View Slide

  113. gem env

    View Slide

  114. Bundle

    View Slide

  115. Gemfile

    View Slide

  116. gem "nokogiri", :git => "git://github.com/tenderlove/nokogiri.git"
    gem "secret_gem", :path => "~/my_secret_path"

    View Slide

  117. bundle install

    View Slide

  118. pack your own gem!

    View Slide

  119. 1. bundle gem NEW_NAME
    2. gem build NEW_NAME.gemspec
    3. gem push NEW_NAME.gem
    http://docs.rubygems.org/read/chapter/20

    View Slide

  120. Rake

    View Slide

  121. Ruby Object Model

    View Slide