Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Intro to Ruby 2.0
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Matt Aimonetti
March 07, 2013
Programming
7
760
Intro to Ruby 2.0
Matt Aimonetti introduces Ruby 2.0 at SDRuby in Febr 2013.
Matt Aimonetti
March 07, 2013
Tweet
Share
More Decks by Matt Aimonetti
See All by Matt Aimonetti
Designing a generic audio API
matt_aimonetti
0
120
Applied concurrency in Go
matt_aimonetti
5
6.4k
Understanding & Sharing Rails sessions
matt_aimonetti
1
1.2k
3 secrets to build web APIs in Go
matt_aimonetti
6
1k
Go at Splice - Go SummerFest
matt_aimonetti
0
1.6k
Wicked Bad Ruby
matt_aimonetti
3
3.8k
Ruby vs. The World
matt_aimonetti
20
6.1k
mmmm..mruby everywhere & revisiting Ruby
matt_aimonetti
9
5.3k
Tower of Babel: A tour of programming languages
matt_aimonetti
28
11k
Other Decks in Programming
See All in Programming
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
190
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
440
Oxlint JS plugins
kazupon
1
1.1k
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
170
24時間止められないシステムを守る-医療ITにおけるランサムウェア対策の実際
koukimiura
2
160
Python’s True Superpower
hynek
0
170
CSC307 Lecture 07
javiergs
PRO
1
560
AIに仕事を丸投げしたら、本当に楽になれるのか
dip_tech
PRO
0
120
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
150
ふん…おもしれぇ Parser。RubyKaigi 行ってやるぜ
aki_pin0
0
110
atmaCup #23でAIコーディングを活用した話
ml_bear
3
510
AgentCoreとHuman in the Loop
har1101
5
270
Featured
See All Featured
Unsuck your backbone
ammeep
671
58k
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
65
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
130
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
740
The Cost Of JavaScript in 2023
addyosmani
55
9.5k
Bootstrapping a Software Product
garrettdimon
PRO
307
120k
KATA
mclloyd
PRO
34
15k
Utilizing Notion as your number one productivity tool
mfonobong
3
220
Discover your Explorer Soul
emna__ayadi
2
1.1k
Making the Leap to Tech Lead
cromwellryan
135
9.7k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
62
Transcript
ruby 2.0 San Diego Ruby - March 2013 - Matt
Aimonetti Wednesday, March 13, 13
Barney Stinson approved Wednesday, March 13, 13
Safe for Human Consumption Wednesday, March 13, 13
horse meat free Wednesday, March 13, 13
Ruby is 20 years old! Wednesday, March 13, 13
what you really need to know Wednesday, March 13, 13
Migration from Ruby 1.9 is trivial Wednesday, March 13, 13
Ruby 1.8 reaches its end of life in June Wednesday,
March 13, 13
Performance improvement Wednesday, March 13, 13
favorite Ruby Wednesday, March 13, 13
less new features Wednesday, March 13, 13
The new REE Wednesday, March 13, 13
Heroku support Wednesday, March 13, 13
Ruby 2.1 scheduled for Xmas 2013 Wednesday, March 13, 13
getting started Wednesday, March 13, 13
rvm rbenv chruby Wednesday, March 13, 13
libyaml (recent) openssl Dependencies you might need to resolve Wednesday,
March 13, 13
new in 2.0 Wednesday, March 13, 13
default code encoding Wednesday, March 13, 13
keyword arguments Wednesday, March 13, 13
# before def create(name, opts={}) opts[:tos] ||= false
opts[:timestamp] ||= Time.now end Wednesday, March 13, 13
# now def create(name, tos: false,
timestamp: Time.now) puts [name, tos, timestamp].inspect end Wednesday, March 13, 13
create("Matt") # -‐> ["Matt", false,
2013-‐03-‐06 16:34:49 -‐0800] create("Matt", timestamp: Time.now -‐ 42) # -‐> ["Matt", false, 2013-‐03-‐06 16:34:07 -‐0800] create("Matt", tos: true, location: "SDRuby") # -‐> unknown keyword: location (ArgumentError) Wednesday, March 13, 13
create("Matt", tos: true, location:
"SDRuby") # -‐> unknown keyword: location (ArgumentError) Wednesday, March 13, 13
# more flexible API def create(name, tos: false,
timestamp: Time.now, **rest) puts [name, tos, timestamp, rest].inspect end Wednesday, March 13, 13
create("Matt") # -‐> ["Matt", false,
2013-‐03-‐06 16:30:29 -‐0800, {}] create("Matt", timestamp: Time.now -‐ 42) # -‐> ["Matt", false, 2013-‐03-‐06 16:29:47 -‐0800, {}] create("Matt", tos: true, location: "SDRuby") # -‐> ["Matt", true, 2013-‐03-‐06 16:30:29 -‐0800, {:location=>"SDRuby"}] Wednesday, March 13, 13
# required keyword param def new(name,
tos: raise("TOS is required"), admin: false) end Wednesday, March 13, 13
new("Matt", tos: false) #-‐> ["Matt", false, false] new("Matt") #-‐> TOS
is required (RuntimeError) Wednesday, March 13, 13
module #prepend Wednesday, March 13, 13
# Not our code class Action def start
"just do it" end end Wednesday, March 13, 13
# The module including our modifying code module RubyIt
def start super + " better with Ruby!" end end Wednesday, March 13, 13
module RubyIt def start super +
" better with Ruby!" end end Wednesday, March 13, 13
class Action prepend RubyIt end p Action.new.start #
-‐> "just do it better with Ruby!" Wednesday, March 13, 13
lazy streams Wednesday, March 13, 13
require 'date' # Print the next 13 Friday the
13th. puts (Date.new(2013)..Date.new(9999)) .lazy .select{|d| d.day == 13 && d.friday?} .first(13) Wednesday, March 13, 13
2013-09-13 2013-12-13 2014-06-13 2015-02-13 2015-03-13 2015-11-13 2016-05-13 2017-01-13 2017-10-13 2018-04-13
2018-07-13 2019-09-13 2019-12-13 Wednesday, March 13, 13
to_h convention Wednesday, March 13, 13
Talk = Struct.new(:title, :speaker) Talk.new("Ruby 2.0", "Matt").to_h # => {:title=>"Ruby
2.0", :speaker=>"Matt"} Wednesday, March 13, 13
%i{foo bar baz} [:foo, :bar, :baz] Wednesday, March 13, 13
tracepoint support Wednesday, March 13, 13
GC/misc optimization Wednesday, March 13, 13
more... Wednesday, March 13, 13
caller_locations caller(start, length) Wednesday, March 13, 13
dtrace support Wednesday, March 13, 13
infamous refinements Wednesday, March 13, 13
Array / Range binary search Wednesday, March 13, 13
Kernel.inspect != Kernel.to_s Wednesday, March 13, 13
String#b "déjà vu".b Wednesday, March 13, 13
Thread. current. thread_variable_set("@foo", 42)
Thread. current. thread_variable_get("@foo") Thread.current.thread_variables Wednesday, March 13, 13
https://github.com/ruby/ ruby/blob/ruby_2_0_0/NEWS Wednesday, March 13, 13
@merbist http://matt.aimonetti.net Wednesday, March 13, 13