Skip to content

Instantly share code, notes, and snippets.

@osi
osi / RestartablePostgreSQLContainer.java
Created March 12, 2021 19:58
a PostgreSQLContainer for use in TestContainer-integrated builds that allows simulating a restart of the database.
import com.github.dockerjava.api.command.CreateContainerCmd;
import com.github.dockerjava.api.model.RestartPolicy;
import org.springframework.util.SocketUtils;
import org.testcontainers.containers.PostgreSQLContainer;
import org.testcontainers.containers.output.OutputFrame;
import org.testcontainers.utility.DockerImageName;
import java.io.IOException;
import java.util.Objects;
@osi
osi / UniqueTest.java
Created February 13, 2021 19:40
"faking" jqwik's unique operator
import net.jqwik.api.Arbitraries;
import net.jqwik.api.Arbitrary;
import org.junit.jupiter.api.Test;
import java.util.HashSet;
import java.util.Set;
import java.util.function.Predicate;
import static org.assertj.core.api.Assertions.assertThat;
@osi
osi / LoggingConnectionFactory.java
Created October 2, 2020 15:44
a R2DBC Connection Factory that gives connections a unique name and logs their creation and closure
import io.r2dbc.spi.Batch;
import io.r2dbc.spi.Connection;
import io.r2dbc.spi.ConnectionFactory;
import io.r2dbc.spi.ConnectionFactoryMetadata;
import io.r2dbc.spi.ConnectionMetadata;
import io.r2dbc.spi.IsolationLevel;
import io.r2dbc.spi.Statement;
import io.r2dbc.spi.ValidationDepth;
import io.r2dbc.spi.Wrapped;
import org.reactivestreams.Publisher;
@osi
osi / HoneycombSpanHandler.java
Last active August 13, 2020 16:22
a Brave SpanHandler that converts the Span into a Honeycomb event, preserving the same IDs as the original Span. Works with Spring Boot 2.3+
import brave.handler.MutableSpan;
import brave.handler.SpanHandler;
import brave.propagation.TraceContext;
import io.honeycomb.beeline.tracing.utils.TraceFieldConstants;
import io.honeycomb.libhoney.Event;
import io.honeycomb.libhoney.EventFactory;
import io.honeycomb.libhoney.HoneyClient;
import io.honeycomb.libhoney.eventdata.EventData;
import org.springframework.core.annotation.Order;
@osi
osi / ReactiveSqsListener.java
Created May 2, 2019 19:13
SQS receiver using Project Reactor
import com.amazonaws.services.sqs.AmazonSQS;
import com.amazonaws.services.sqs.model.AmazonSQSException;
import com.amazonaws.services.sqs.model.Message;
import com.amazonaws.services.sqs.model.ReceiveMessageRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import reactor.core.publisher.Flux;
import reactor.core.publisher.FluxSink;
import reactor.core.scheduler.Schedulers;
import org.reactivestreams.Publisher;
import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.time.Duration;
import java.util.concurrent.atomic.AtomicBoolean;
public class DelayCancelPublisher<T> implements Publisher<T> {
import org.reactivestreams.Subscriber;
import org.reactivestreams.Subscription;
import reactor.core.Scannable;
import reactor.core.publisher.DirectProcessor;
import reactor.core.publisher.FluxProcessor;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;

Keybase proof

I hereby claim:

  • I am osi on github.
  • I am osi_ (https://keybase.io/osi_) on keybase.
  • I have a public key whose fingerprint is 6840 34D9 3258 2D89 0A5D 5D7F 9BE4 66AF 8722 48E5

To claim this, I am signing this object:

@osi
osi / publish.rb
Created January 16, 2009 23:22
"Publish" a folder of FLA files using Flash CS3/4
#!/usr/bin/env ruby -wKU
require "fileutils"
def generate_jsfl(fla, log)
return <<EOF
var sourceFile = "file://#{Dir.pwd}/#{fla}";
var logFile = "file://#{log}";
var doc = fl.openDocument(sourceFile);
@osi
osi / .bash_git
Created December 10, 2008 04:26 — forked from halbtuerke/gist:31934
RED="\[\033[0;31m\]"
YELLOW="\[\033[0;33m\]"
GREEN="\[\033[0;32m\]"
BLUE="\[\033[0;34m\]"
LIGHT_RED="\[\033[1;31m\]"
LIGHT_GREEN="\[\033[1;32m\]"
WHITE="\[\033[1;37m\]"
LIGHT_GRAY="\[\033[0;37m\]"
COLOR_NONE="\[\e[0m\]"
TITLEBAR="\[\033]0;\]${USER}@${HOSTNAME%%.*}:${PWD/#$HOME/~}\[\007\]"