Skip to content

Instantly share code, notes, and snippets.

View sirupsen's full-sized avatar
🐡

Simon Eskildsen sirupsen

🐡
View GitHub Profile
@sirupsen
sirupsen / omg.c
Created February 14, 2014 13:48
Virtual memory to physical memory.
$ ps -o rss,command | grep ./omg | grep -v grep
488 ./omg
$ ps -o rss,command | grep ./omg | grep -v grep
10268 ./omg
@sirupsen
sirupsen / gist:9961145
Created April 3, 2014 19:29
Ever-evolving light wrapper on Net::HTTP instead of always reaching for a cheatsheet.
require 'net/http'
require 'uri'
require 'json'
class ProperHTTP
def self.get(uri)
handle_response Net::HTTP.get_response(URI.parse(uri))
end
def self.post(uri, payload)
$ sudo apt-get install maven
The following extra packages will be installed:
ant ant-optional aspectj bsh fop java-wrappers junit junit4 libaether-java libaopalliance-java libapache-pom-java libasm3-java
libaspectj-java libasync-http-client-java libatinject-jsr330-api-java libavalon-framework-java libbatik-java libbsf-java libbsh-java
libcdi-api-java libcglib-java libclassworlds-java libcommons-beanutils-java libcommons-cli-java libcommons-codec-java
libcommons-collections3-java libcommons-configuration-java libcommons-digester-java libcommons-httpclient-java libcommons-io-java
libcommons-jexl2-java libcommons-jxpath-java libcommons-lang-java libcommons-logging-java libcommons-net2-java libcommons-parent-java
libcommons-vfs-java libdom4j-java libdoxia-java libeasymock-java libfop-java libganymed-ssh2-java libgeronimo-interceptor-3.0-spec-java
libgeronimo-jpa-2.0-spec-java libgeronimo-osgi-support-java libguava-java libguice-java libhamcrest-java libhttpclient-java
libhttpcore-java libitext1-ja
@sirupsen
sirupsen / gist:7ebd15c7e2e7469ce0e1
Created August 1, 2014 15:02
BTRFS statsd monitor script
#!/bin/bash
TOTAL=$(sudo btrfs filesystem show /dev/mapper/lvroot-u | grep -oP '(?<=size )\d+\.\d+')
USED=$(sudo btrfs filesystem show /dev/mapper/lvroot-u | grep -oP '(?<=used )\d+\.\d+' | head -n1)
ALLOCATED=$(sudo btrfs filesystem show /dev/mapper/lvroot-u | grep -oP '(?<=used )\d+\.\d+' | tail -n1)
FREE=$(echo "$TOTAL - $USED" | bc)
echo -e -n "system.btrfs.total:$TOTAL|g" > /dev/udp/127.0.0.1/8125
echo -e -n "system.btrfs.used:$USED|g" > /dev/udp/127.0.0.1/8125
echo -e -n "system.btrfs.allocated:$USED|g" > /dev/udp/127.0.0.1/8125
@sirupsen
sirupsen / resiliency.sh
Created September 3, 2014 14:52
Script to set up port redirection and disable it again. The tricky thing here is that even when you disable the port redirect, traffic can still flow through the redirected port for already established socket sessions, but new connections can't be established. This, in addition to removing the redirect, gdbs into the process and closes the file …
#!/bin/bash
if [[ -z $1 ]]; then
echo -e "\x1b[31mMust supply src + dest port"
exit 1
fi
echo -e "\x1b[32mForwarded port $2 --> $1\x1b[33m"
sudo iptables -t nat -I OUTPUT -p tcp -o lo --dport $2 -j REDIRECT --to-ports $1
@sirupsen
sirupsen / gist:96326faaf94fc3051d0b
Created January 13, 2015 16:49
Example for blog post on resiliency
def test_section_a_resilient_to_data_store_b_being_down
Toxiproxy[:data_store_b].down do
get '/section_a'
assert_response :success
end
end
@sirupsen
sirupsen / gist:3b3762c74355f42ac7bc
Created January 13, 2015 16:49
Example for blog post
def load_customer
if customer_id = session[:customer_id]
@customer = Customer.find_by_id(customer_id)
end
end
@sirupsen
sirupsen / gist:44f6c7293f25cf69382d
Created January 13, 2015 16:49
Example for blog post
def test_storefront_resilient_to_sessions_down
Toxiproxy[:sessions_data_store].down do
get '/'
assert_equal 'Customer sign in is currently unavailable', flash[:notice]
assert_response :success
end
end
def load_customer
if customer_id = session[:customer_id]
@customer = Customer.find_by_id(session[:customer_id])
end
# in reality e.g. a redis exception thrown from the driver
# could be raised from circuit breaker or semian as well (see later)
rescue Sessions::DataStoreUnavailable
flash[:notice] = 'Customer sign in is currently unavailable'
@customer = nil
end
@sirupsen
sirupsen / setup.sh
Last active August 29, 2015 14:28
Script to set up development environment for ngx-lua
WORKDIR="/home/vagrant/src"
clone_repo() {
local name=$1; shift
local repo=$1; shift
if [[ ! -d "$WORKDIR/$name" ]]; then