Skip to content

Instantly share code, notes, and snippets.

Verifying my Blockstack ID is secured with the address 16nkM86wpv7W3BKgTA5qfQQtGEdZECNVgr https://explorer.blockstack.org/address/16nkM86wpv7W3BKgTA5qfQQtGEdZECNVgr
@jpe42
jpe42 / 0x8616e6270e14ff16dbbf1ea0a46ea3dc0d84ce1d
Created July 28, 2017 17:03
0x8616e6270e14ff16dbbf1ea0a46ea3dc0d84ce1d
0x8616e6270e14ff16dbbf1ea0a46ea3dc0d84ce1d
@jpe42
jpe42 / rmServices.sh
Created December 19, 2016 05:01
Remove Docker Services
#!/bin/bash
#./rmServices.sh redis-cluster-m-
readonly FILTER=${1:-"redis-cluster-m-"}
docker service ls | grep "$FILTER" | awk '{print $1}' | xargs docker service rm
exit 0
@jpe42
jpe42 / forEach.sh
Created December 19, 2016 04:59
Convenience Script for Executing CommandsAcross all Redis Swarm Services.
#!/bin/bash
#./forEach.sh 7001 5 redis-cluster-m- CLUSTER INFO
readonly STARTING_PORT=$1
readonly NUM_MASTERS=$2
readonly NAME_PREFIX=$3
readonly REDIS_CMD=("${@:4}")
readonly LOCAL_CONTAINER_ID=$(docker ps -f name="$NAME_PREFIX" -q | head -n 1)
readonly LOCAL_PORT=$(docker inspect --format='{{index .Config.Labels "com.docker.swarm.service.name"}}' "$LOCAL_CONTAINER_ID" | sed 's|.*-||')
for ((port = STARTING_PORT, endPort = port + NUM_MASTERS; port < endPort; port++)) do
host=$([ "$LOCAL_PORT" == $port ] && echo "127.0.0.1" || echo "$NAME_PREFIX$port")
@jpe42
jpe42 / assignSlots.sh
Last active October 12, 2017 10:02
Evenly assign slots to a new Redis Cluster
#!/bin/bash
#./assignSlots.sh 7001 5 redis-cluster-m-
readonly STARTING_PORT=${1:-0}
readonly NUM_MASTERS=${2:-0}
readonly NAME_PREFIX=${3:-"redis-cluster-m-"}
readonly MAX_SLOT=$((16383))
readonly SLOT_RANGE=$(((MAX_SLOT + NUM_MASTERS - 1) / NUM_MASTERS))
readonly LOCAL_CONTAINER_ID=$(docker ps -f name="$NAME_PREFIX" -q | head -n 1)
readonly LOCAL_PORT=$(docker inspect --format='{{index .Config.Labels "com.docker.swarm.service.name"}}' "$LOCAL_CONTAINER_ID" | sed 's|.*-||')
for ((port = STARTING_PORT, endPort = STARTING_PORT + NUM_MASTERS, slot = 0; port < endPort; port++)) do
@jpe42
jpe42 / meetNodes.sh
Last active December 21, 2016 17:36
Automates the MEET process for Redis Swarm Services.
#!/bin/bash
#./meetNodes.sh 7001 5 redis-cluster-m-
readonly STARTING_PORT=${1:-0}
readonly NUM_MASTERS=${2:-0}
readonly NAME_PREFIX=${3:-"redis-cluster-m-"}
readonly LOCAL_CONTAINER_ID=$(docker ps -f name="$NAME_PREFIX" -q | head -n 1)
readonly LOCAL_PORT=$(docker inspect --format='{{index .Config.Labels "com.docker.swarm.service.name"}}' "$LOCAL_CONTAINER_ID" | sed 's|.*-||')
# From local service task, meet all other nodes
for ((port = STARTING_PORT, endPort = STARTING_PORT + NUM_MASTERS; port < endPort; port++)) do
if [ "$LOCAL_PORT" == $port ]; then
@jpe42
jpe42 / createMasters.sh
Last active December 19, 2016 04:09
Create Redis Masters as Swarm Services
#!/bin/bash
#./createMasters.sh 7001 5 redis-cluster-m- comodal/alpine-redis
readonly STARTING_PORT=${1:-0}
readonly NUM_MASTERS=${2:-0}
readonly NAME_PREFIX=${3:-"redis-cluster-m-"}
readonly IMAGE=${4:-"comodal/alpine-redis"}
for ((port = STARTING_PORT, endPort = port + NUM_MASTERS; port < endPort; port++)) do
name="$NAME_PREFIX$port"
docker service create\
--name "$name"\
@jpe42
jpe42 / HttpServletRequestUtil.java
Created October 13, 2016 16:49
Get requestor ip
import javax.servlet.http.HttpServletRequest;
public class RequestUtil {
public static String getRequestIp(final HttpServletRequest request) {
String ip = request.getHeader("X-Forwarded-For");
if (ip == null) {
return request.getRemoteAddr();
}
ip = ip.trim();
@jpe42
jpe42 / AtomicLogCounters.java
Last active April 12, 2017 06:49
Compact Atomic Log Counters
package systems.comodal.collision.cache;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.VarHandle;
import java.util.concurrent.ThreadLocalRandom;
/**
* Provides atomic operations for 8-bit logarithmic counters backed by a byte array.
*
* @author James P. Edwards
@jpe42
jpe42 / Hex.java
Created August 22, 2016 18:48
Java 9 Hex Coder
import java.util.PrimitiveIterator;
import static java.lang.Character.digit;
public final class Hex {
private Hex() {}
private static final char[] HEX_CHARS = new char[]{'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', 'a', 'b', 'c', 'd', 'e', 'f'};