Instantly share code, notes, and snippets.

View di.rb
class DIContainer
def configure
yield self
end
def method_missing(key, val)
if key =~ /=$/
key = key.to_s.chop
(class << self; self; end).class_eval do
attr_accessor key
View condvar_broadcast.rb
m = Mutex.new
c = ConditionVariable.new
tg = ThreadGroup.new
t = 5.times.map do |n|
tg.add(Thread.new do
print "starting #{n}\n"
m.synchronize do
View renting_zero.rb
require "thread"
require "connection_pool"
require "pp"
NUM_CLIENTS = 9
MAX_AT_A_TIME = 3
TIMEOUT = 10
JOB_TIME = 3
# we'll let people lease access to zero
View s3.rb
=begin
{
"AccessKey": {
"UserName": "s3.deploy.foo",
"Status": "Active",
"CreateDate": "2016-11-04T16:25:27.123Z",
"SecretAccessKey": "secret",
"AccessKeyId": "access"
}
}
View dfa.exs
defmodule DFA do
def accepts?(accept: accept_states, rules: rules, s: string) do
string
|> String.graphemes
|> List.foldl(1, fn(char, state) -> next(state: state, char: char, rules: rules) end)
|> member?(accept_states)
end
defp next(state: nil, char: _char, rules: _rules) do
nil
View processes-and-pubsub.rb
require 'httparty'
require 'redis'
require 'json'
require 'timeout'
$publisher = Redis.new
$subscriber = Redis.new
CHANNEL = 'omg'
View client.rb
# or `echo some-request | nc localhost 8181 -4u `
MAX_READ = 1024 * 8
FLAGS = 0
c = Socket.new :INET, :DGRAM
s = Socket.pack_sockaddr_in 8181, "127.0.0.1"
c.send("some-request", FLAGS, s)
res = c.recv(MAX_READ)
View strace.sh
strace cmd 2> /dev/stdout | cut -d '(' -f 1 | sort | uniq | grep -v "[+=]" | sort -rn -k1,1
View join.rb
# A reminder that join conceptually combines the stacks of the parent and child threads.
# If you consider that the stack grows downard, the child stack will sit below the parent
# stack. See output below.
def main?
Thread.current == Thread.main
end
def name
if main?
"main"
View pipe.rb
require "thread"
stage_one = Queue.new
stage_two = Queue.new
stage_three = Queue.new
stage_one_worker = Thread.new do
100.times do |n|
stage_one << n