Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Ruby for Starter
Search
高見龍
March 23, 2013
Programming
540
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Ruby for Starter
高見龍
March 23, 2013
More Decks by 高見龍
See All by 高見龍
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
740
自己的售票系統自己做!
eddie
0
780
AI Agent 時代的開發者生存指南
eddie
4
3k
print("Hello, World")
eddie
2
770
為你自己學 Python - 冷知識篇
eddie
1
570
為你自己學 Python
eddie
0
880
Generative AI 年會小聚 - AI 教我寫程式
eddie
0
340
讓數據說話:用 Python、Prometheus 和 Grafana 講故事
eddie
0
840
AI 時代的程式語言學習法
eddie
0
370
Other Decks in Programming
See All in Programming
作れるエンジニアから、価値を届けるエンジニアへ
ryunakayama
1
250
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
370
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
300
SODA - FACT BOOK(EN)
sodainc
1
220
AI駆動開発4年目の現在地(『あなたはFDEになるべきか?』イベント資料)
kumaiu
0
520
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
420
クラウドゲーミングのパフォーマンス最適化に挑む / Cloud Gaming Performance Tuning
vivion
0
330
AIが実装を担う時代の「技術設計」と「チームマネジメント」
kamina_zzz
2
240
Vapor Mode でアクセシビリティは 壊れないか検証した話
fuqda
1
330
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
740
オーケストレーション記述言語 Katari
yukikurage
0
240
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
210
Featured
See All Featured
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
350
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Intergalactic Javascript Robots from Outer Space
tanoku
273
28k
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
2
770
Color Theory Basics | Prateek | Gurzu
gurzu
1
510
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
680
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
630
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3.1k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
560
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.6k
Transcript
Ruby Starter eddie@fju
None
current status
80% iOS app, 20% Ruby/Rails
What I want?
Problem Solving
History
まつもと ゆきひろ (Matz)
first released at 1995
2.0 released at 2013
None
Why Ruby? free, open source, easy to learn
Ruby != Rails
Happy, and Fun
Rubies CRuby(MRI), REE, mRuby, JRuby, IronRuby, Rubinius..etc
Version 1.8, 1.9, 2.0
Ruby 1.8 has no future
RVM Ruby Version Manager https://rvm.io/
Editors Vim, Emacs, TextMate, Sublime Text... etc
git
coding style https://github.com/styleguide/ruby
Variables and Constants
local variable variable
global variable $variable
instance variable @variable
class variable @@variable
virtual variable true, false, self, nil
variable assignment a = 1 x, y, z = 1,
2, 3
Constant begins with a capital letter, and it can be
changed
Reserved word and Keyword
Logic and Flow Control
only false and nil are false
true v.s. TrueClass false v.s. FalseClass nil v.s. NilClass
if..elsif..end
unless = if not
if modifier
case .. when..
BEGIN{} and END{}
a = true ? 'a' : 'b'
a ||= 'a'
Comment # single line
Comment =begin .. =end
Loop and Iteration
for.. in..
while .. end
until .. end
until = while not
times
upto, downto
each, each_with_index
Block
Proc
my_square = Proc.new { | x | x ** 2
} my_square.call(10) # 100 my_square[10] # 100
lambda, ->
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]
Proc v.s. lambda
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
{} v.s. do..end http://blog.eddie.com.tw/2011/06/03/do-end-vs-braces/
Number
Fixnum and Bignum
10 / 3
String http://ruby-doc.org/core-1.9.2/String.html
single and double quotes
%q v.s. %Q
"%s" % "eddie"
string interpolation
Array http://ruby-doc.org/core-1.9.2/Array.html
Array.new v.s. []
%w
Hash http://ruby-doc.org/core-1.9.2/Hash.html
Hash.new v.s {}
a = { :name => 'eddie' } a = {
name: 'eddie' }
Range http://ruby-doc.org/core-1.9.2/Range.html
(1..10) v.s. (1...10)
Methods
def method_name(param) ... end
parentheses can be omitted
? and !
return value
Singleton Method
class Cat def walk puts "I'm walking" end end cat
= Cat.new def cat.fly puts "I can fly" end cat.fly
Method Missing
def method_missing(method_name) puts "method: #{method_name} is called!" end [1, 2,
3, 4].hello
Exception Handling begin .. rescue.. else.. ensure.. end
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
Object-Oriented Programming
everything in Ruby is an Object
object = state+ behavior
top class = Object top class would be BasicObject in
Ruby 1.9
class ClassName < ParentClass ... end
Naming Convention
initialize
ClassName.new
self = current object
instance and class variable
instance and class method
public, protected and private method
getter and setter
attr_reader, attr_writer and attr_accessor
Open Class
Module
module ModuleName ... end
module has no inheritance
module has no instance
Naming Convention
require v.s. load
Mixin
Ruby is single inheritance
Duck Typing
include v.s. extend
Gem
gem install PACKAGE_NAME
gem env
Bundle
Gemfile
gem "nokogiri", :git => "git://github.com/tenderlove/nokogiri.git" gem "secret_gem", :path => "~/my_secret_path"
bundle install
pack your own gem!
1. bundle gem NEW_NAME 2. gem build NEW_NAME.gemspec 3. gem
push NEW_NAME.gem http://docs.rubygems.org/read/chapter/20
Rake
Ruby Object Model