Skip to content

Instantly share code, notes, and snippets.

@jwhiteman
jwhiteman / gist:4229ed6ecdea3ea71be8
Last active August 29, 2015 14:26
Exporting PDF with DocRaptor
curl -H "Content-Type:application/json" -d'{"user_credentials":"YOUR_CREDENTIALS_HERE", "doc":{"name":"kitabu.pdf", "document_type":"pdf", "test":"false", "document_url":"https://dl.dropboxusercontent.com/u/123456789/output/kitabu.pdf.html"}}' http://docraptor.com/docs > kitabu.pdf
require 'httparty'
require 'redis'
require 'json'
require 'timeout'
$publisher = Redis.new
$subscriber = Redis.new
CHANNEL = 'omg'
@jwhiteman
jwhiteman / example.ex
Last active December 11, 2015 20:29
Elixir vs Ruby (pattern matching vs conditional logic)
# 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 / binary_tree.exs
Created January 22, 2016 02:45
invert a binary tree in Elixir
# 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 November 18, 2016 07:55
Simple pipeline using Threads and Queues
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
@jwhiteman
jwhiteman / join.rb
Created November 19, 2016 19:22
Thread#join
# 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 December 30, 2016 18:33
sort strace output
strace cmd 2> /dev/stdout | cut -d '(' -f 1 | sort | uniq | grep -v "[+=]" | sort -rn -k1,1
@jwhiteman
jwhiteman / client.rb
Last active January 7, 2017 07:45
UDP in Ruby - packing socket manually
# 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)
@jwhiteman
jwhiteman / dfa.exs
Created January 27, 2017 03:42
basic DFA simulation
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 January 30, 2017 03:09
Basic Aws::S3::Client usage
=begin
{
"AccessKey": {
"UserName": "s3.deploy.foo",
"Status": "Active",
"CreateDate": "2016-11-04T16:25:27.123Z",
"SecretAccessKey": "secret",
"AccessKeyId": "access"
}
}