Skip to content

Instantly share code, notes, and snippets.

View bric3's full-sized avatar
💭
🤨

Brice Dutheil bric3

💭
🤨
View GitHub Profile
@bric3
bric3 / CountingServletResponseWrapper.java
Created July 21, 2020 09:08
Simple payload counting Servlet Response wrapper
import javax.servlet.ServletOutputStream;
import javax.servlet.WriteListener;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Objects;
@bric3
bric3 / ZookeeperRule.java
Created July 20, 2020 12:39
Simple JUnit 4 RUle for Zookeeper using Curator
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.framework.CuratorFrameworkFactory;
import org.apache.curator.retry.RetryOneTime;
import org.apache.curator.test.TestingServer;
import org.junit.rules.ExternalResource;
import java.io.IOException;
import java.io.UncheckedIOException;
import net.bytebuddy.ByteBuddy;
import net.bytebuddy.description.method.MethodDescription;
import net.bytebuddy.description.modifier.TypeManifestation;
import net.bytebuddy.description.modifier.Visibility;
import net.bytebuddy.dynamic.DynamicType.Builder.MethodDefinition;
import net.bytebuddy.dynamic.loading.ClassLoadingStrategy;
import net.bytebuddy.implementation.Implementation;
import net.bytebuddy.implementation.InvocationHandlerAdapter;
import net.bytebuddy.matcher.ElementMatcher.Junction;
import org.objenesis.Objenesis;
@bric3
bric3 / HeapVersusDirect.java
Created July 7, 2020 19:45
On Linux show of where bytebuffers are reserved / allocated
import java.lang.ProcessBuilder.Redirect;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.nio.Buffer;
import java.nio.ByteBuffer;
/**
* Usage:
* <p>
@bric3
bric3 / JavaPmapInspector.java
Last active September 23, 2021 08:42
Inspect pmap -X output of a java process, requires Java11, may not be 100% accurate
/*
Moved here => https://github.com/bric3/java-pmap-inspector
*/
public class JavaPmapInspector {
public static void main(String[] args) throws IOException {
System.err.println("Go to:");

Single class graalvm, no external dependencies

❯ java --version
openjdk 11.0.7 2020-04-14
OpenJDK Runtime Environment GraalVM CE 20.1.0 (build 11.0.7+10-jvmci-20.1-b02)
OpenJDK 64-Bit Server VM GraalVM CE 20.1.0 (build 11.0.7+10-jvmci-20.1-b02, mixed mode, sharing)
@bric3
bric3 / RsyncOverSsh_Fast_Documentation.md
Created June 8, 2020 08:45 — forked from thomasdarimont/RsyncOverSsh_Fast_Documentation.md
Rsync over SSH - (40MB/s over 1GB NICs)

The fastest remote directory rsync over ssh archival I can muster (40MB/s over 1gb NICs)

This creates an archive that does the following:

rsync (Everyone seems to like -z, but it is much slower for me)

  • a: archive mode - rescursive, preserves owner, preserves permissions, preserves modification times, preserves group, copies symlinks as symlinks, preserves device files.
  • H: preserves hard-links
  • A: preserves ACLs
@bric3
bric3 / sync-crds-sh
Created May 14, 2020 06:50
Download custom resource definitions, with specific domains on the current cluster
#!/bin/bash
# Customize this list
crd_domains="istio|bitnami|flux|strimzi|flagger|elastic|zookeeper|projectcalico|pingcap|coreos|kope|gke|google|cert-manager"
kubectl get crd \
| grep -E ".*(${crd_domains})[^ ]+" -o \
| xargs -I %% sh -c "kubectl get crd %% -o yaml > %%.yaml" -- %%
@bric3
bric3 / KubectlPortForward.java
Last active March 10, 2020 23:58
Autocloseable kubectl port-forward process
import lombok.extern.slf4j.Slf4j;
import org.jetbrains.annotations.NotNull;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.util.Objects;
import java.util.concurrent.ArrayBlockingQueue;
@bric3
bric3 / PokeHttpServer.java
Last active June 8, 2020 10:04
One class, one method, HTTP server to test connection
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.util.Date;
/**
* Simple HTTP server
*