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 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 | |
View binary_tree.exs
# http://is.gd/NzZxYT | |
defmodule BinaryTree do | |
def invert([n, list]) when is_integer(n) and is_list(list) do | |
[n, invert(list)] | |
end | |
def invert([n, nc, m, mc]) | |
when is_integer(n) and is_integer(m) | |
and is_list(nc) and is_list(mc) do |
NewerOlder