Skip to content

Instantly share code, notes, and snippets.

J. Whiteman jwhiteman

Block or report user

Report or block jwhiteman

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@jwhiteman
jwhiteman / example.ex
Last active Dec 11, 2015
Elixir vs Ruby (pattern matching vs conditional logic)
View example.ex
# elixir
defmodule Example do
def work(_msg) do
IO.puts "called 1st function"
end
def work(_msg, data=[_a, _b, _c]) do
IO.puts "called 2nd function #{inspect data}"
end
@jwhiteman
jwhiteman / gist:7634421
Last active Dec 29, 2015
notes on getting hadoop (both single node and a cluster) going on Ubuntu LTS; there are just notes to myself and have some gaps in them. Not meant to be a tutorial or a walkthrough.
View gist:7634421
sudo apt-get update
sudo apt-get install vim
# generate keys and copy them over
ssh-copy-id -i id_rsa.pub vagrant@hnclient # move node ssh key to the client
# update /etc/hosts on each node to know at least the master; the master about the slave nodes
# make sure master can ssh into localost
cat .ssh/id_rsa.pub >> .ssh/authorized_keys
# re-read: http://stackoverflow.com/questions/8872807/hadoop-datanodes-cannot-find-namenode
@jwhiteman
jwhiteman / binary_tree.exs
Created Jan 22, 2016
invert a binary tree in Elixir
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
@jwhiteman
jwhiteman / pipe.rb
Created Nov 18, 2016
Simple pipeline using Threads and Queues
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 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"
@jwhiteman
jwhiteman / strace.sh
Created Dec 30, 2016
sort strace output
View strace.sh
strace cmd 2> /dev/stdout | cut -d '(' -f 1 | sort | uniq | grep -v "[+=]" | sort -rn -k1,1
@jwhiteman
jwhiteman / client.rb
Last active Jan 7, 2017
UDP in Ruby - packing socket manually
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 processes-and-pubsub.rb
require 'httparty'
require 'redis'
require 'json'
require 'timeout'
$publisher = Redis.new
$subscriber = Redis.new
CHANNEL = 'omg'
@jwhiteman
jwhiteman / dfa.exs
Created Jan 27, 2017
basic DFA simulation
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
@jwhiteman
jwhiteman / s3.rb
Created Jan 30, 2017
Basic Aws::S3::Client usage
View s3.rb
=begin
{
"AccessKey": {
"UserName": "s3.deploy.foo",
"Status": "Active",
"CreateDate": "2016-11-04T16:25:27.123Z",
"SecretAccessKey": "secret",
"AccessKeyId": "access"
}
}
You can’t perform that action at this time.