RubyによるMac OS Xデスクトップアプリケーション開発入門--Snow Leopard対応版 - Presentation Transcript
Ruby Mac OS X
-- Snow Leopard
2009 11 8
Ruby Mac OS X
-- Snow Leopard
2009 11 8
Ruby Mac OS X
-- Snow Leopard
2009 11 8
Ruby Mac
2009 11 8
Ruby Mac
2009 11 8
Ruby Mac
OS X 10.2
Ruby 1.6.7
2002
2009 11 8
Ruby Mac
OS X 10.2
Ruby 1.6.7
2005
2002
OS X 10.4
Ruby 1.8.2
2009 11 8
Ruby Mac
OS X 10.5
Ruby 1.8.6
OS X 10.2 RubyCocoa
Ruby 1.6.7 Rails
2005
2002 2007
OS X 10.4
Ruby 1.8.2
2009 11 8
Ruby Mac
OS X 10.5
Ruby 1.8.6
OS X 10.2 RubyCocoa
Ruby 1.6.7 Rails
2005 2009
2002 2007
OS X 10.4 OS X 10.6
Ruby 1.8.2 Ruby 1.8.7
RubyCocoa
Rails
2009 11 8
Rubyist Mac
2009 11 8
Rubyist Mac
Ruby 10
1 Java
http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html
2009 11 8
Rubyist Mac
Ruby 10
1 Java
Mac 10%
90% Windows
http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html
2009 11 8
Rubyist Mac
Ruby 10
1 Java
Mac 10%
90% Windows
Rubyist≒Mac
Ruby Conf 2008
http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html
2009 11 8
Rubyist Mac
Ruby 10
1 Java
Mac 10%
90% Windows
Rubyist≒Mac
Ruby Conf 2008
NaCl Mac Rubyist
http://www.tiobe.com/index.php/paperinfo/tpci/Ruby.html
2009 11 8
Ruby Mac
2009 11 8
Ruby Mac
2009 11 8
Ruby Mac
Xcode Ruby
Mac OS X 10.5 ...
2009 11 8
Ruby Mac
Xcode Ruby
Mac OS X 10.5 ...
Ruby Mac
Ruby RubyCocoa
MacRuby
2009 11 8
Ruby Mac
Xcode Ruby
Mac OS X 10.5 ...
Ruby Mac
Ruby RubyCocoa
MacRuby
GUI
2009 11 8
Xcode
2009 11 8
Xcode
2009 11 8
Xcode
2009 11 8
Xcode
2009 11 8
Interface Builder
2009 11 8
Interface Builder
2009 11 8
Interface Builder
2009 11 8
Interface Builder
GUI
2009 11 8
Objective-C
2009 11 8
Objective-C
Mac
2009 11 8
Objective-C
Mac
C
C
2009 11 8
Objective-C
Mac
C
C
C++
Smalltalk
C Squeak
http://www.limo.fumi2kick.com/forum/glang/glang17.jpg
2009 11 8
Objective-C
Mac
C
C
C++
Smalltalk
Cocoa Objective-C
C Squeak
http://www.limo.fumi2kick.com/forum/glang/glang17.jpg
2009 11 8
GCD
C
http://www.apple.com/jp/macosx/technology/
2009 11 8
GCD
C
MacRuby 0.5
http://www.apple.com/jp/macosx/technology/
2009 11 8
GCD
GCD
# num
# true
def prime?(num)
(2...num).each do |i|
return false if num % i == 0
end
return true
end
2009 11 8
GCD
# 10_000_000 10_000_299
prime = []
for i in 0...300
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length)
$ time macruby count-prime.rb
14
macruby count-prime.rb 14.86s user 0.12s system 93% cpu 16.016 total
2009 11 8
GCD
# 10_000_000 10_000_299
prime = []
for i in 0...300
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009 11 8
GCD
# 10_000_000 10_000_299
prime = []
for i in 0...300
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009 11 8
GCD
# 10_000_000 10_000_299
prime = []
for i in 0...300
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q.apply(300) do |i|
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q.apply(300) do |i|
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q.apply(300) do |i|
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009 11 8
10000000 10000001 10000002 … 10000299
FIFO
CPU
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q.apply(300) do
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q.apply(300) do
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q.apply(300) do
n = i + 10_000_000
prime << n if prime?(n)
end
puts(prime.length) #=> 14
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009 11 8
# 10_000_000 10_000_299
q = Dispatch::Queue.concurrent
prime = []
q_prime = Dispatch::Queue.new("com.example.prime")
q.apply(300) do
n = i + 10_000_000
q_prime.dispatch { prime << n } if prime?(n)
end
q_prime.dispatch(true) { puts(prime.length) }
2009 11 8
0 comments
Post a comment