Skip to content

Instantly share code, notes, and snippets.

View paneq's full-sized avatar
🏠
Working from home

Robert Pankowecki paneq

🏠
Working from home
View GitHub Profile
@paneq
paneq / e6.txt
Created February 24, 2012 22:05
Example 6 - fiber that can be always resumed
> f = Fiber.new{ loop{ Fiber.yield rand() } }
> f.resume
=> 0.284433348607815
> f.resume
=> 0.49985331837809865
> f.resume
=> 0.41816746846163666
@paneq
paneq / e5.txt
Created February 24, 2012 22:02
Example 5 - just iterators in fibers
> f = Fiber.new{ 5.times{|x| Fiber.yield(x+10) }; nil }
> 6.times{ puts f.resume.inspect }
10
11
12
13
14
nil
@paneq
paneq / e4.txt
Created February 24, 2012 21:57
Example 4 - last fiber value
f = Fiber.new{ Fiber.yield 7; "OMG Fibers"}
> f.resume
=> 7
> f.resume
=> "OMG Fibers"
@paneq
paneq / e3.txt
Created February 24, 2012 21:54
Example 3 - returning value from Fiber
> f = Fiber.new{ Fiber.yield 2; Fiber.yield 3; Fiber.yield 5; Fiber.yield 7; }
> f.resume
=> 2
> f.resume
=> 3
> f.resume
=> 5
> f.resume
=> 7
> f.resume
@paneq
paneq / e2.txt
Created February 24, 2012 21:50
Example 2 - Resuming fiber
> f = Fiber.new{ puts "first"; Fiber.yield; puts "second" }
> f.resume
first
=> nil
> f.resume
second
=> nil
> f.resume
FiberError: dead fiber called
@paneq
paneq / e1.txt
Created February 24, 2012 21:47
Example 1 - creating and resuming fibers
> f= Fiber.new { puts "x" }
> f.resume
x
=> nil
> f.resume
FiberError: dead fiber called
@paneq
paneq / me_gusta.rb
Created February 13, 2012 11:07
Challenge
(bob & cindy).is_ok?
(bob & cindy).receive_message do |user, message|
end
TestUser === bob.class
TestUserGroup === (bob & cindy).class
@paneq
paneq / bbq_java.rb
Created February 7, 2012 23:47
bbq factories
class SessionFactory
def next(options)
Capybara::Session.new(options[:driver], Bbq.app)
end
end
class PooledSessionFactory
attr_accessor :idle, :taken
def initialize(session_factory)
@paneq
paneq / gelf.rb
Created February 7, 2012 12:20
GELF performance test
require 'rubygems'
require 'gelf'
n = GELF::Notifier.new("localhost", 12201)
index = 0
t = Time.now
File.open("production.log") do |f|
f.each_line do |line|
n.info(line)
@paneq
paneq / output.txt
Created February 6, 2012 13:39
fibers and ||= behaviour
ruby-1.9.2-p180-fastrequire :001 > f = Fiber.new do
ruby-1.9.2-p180-fastrequire :002 > @something ||= begin
ruby-1.9.2-p180-fastrequire :003 > Fiber.yield # external query
ruby-1.9.2-p180-fastrequire :004?> 2
ruby-1.9.2-p180-fastrequire :005?> end
ruby-1.9.2-p180-fastrequire :006?> end
=> #<Fiber:0x000000028d45a8>
ruby-1.9.2-p180-fastrequire :007 > f.resume
=> nil
ruby-1.9.2-p180-fastrequire :008 > puts @something.inspect