Skip to content

Instantly share code, notes, and snippets.

@rpless
rpless / Graph.java
Last active August 29, 2017 08:09
Simple Graph Search Example
import java.util.*;
class Graph {
public static void main(String... args) {
Graph graph = new Graph();
graph.addNodes('A', 'B', 'C', 'D' ,'E');
graph.addEdge('A', 'B');
graph.addEdge('A', 'C');
graph.addEdge('B', 'D');
@rpless
rpless / gist:8403fec7aa0c497ece1c
Created September 23, 2015 12:35
Finch-Argonaut Benchmarks with Jawn Parser
[info] Running org.openjdk.jmh.Main -i 10 -wi 10 -f 2 -t 1 io.finch.benchmarks.service.argonaut.*
[error] Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=1024m; support was removed in 8.0
[info] # JMH 1.9.1 (released 152 days ago, please consider updating!)
[info] # VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/bin/java
[info] # VM options: -Djava.net.preferIPv4Stack=true -XX:+AggressiveOpts -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:ReservedCodeCacheSize=128m -XX:MaxPermSize=1024m -Xss8M -Xms512M -XX:SurvivorRatio=128 -XX:MaxTenuringThreshold=0 -Xss8M -Xms512M -Xmx2G
[info] # Warmup: 10 iterations, 1 s each
[info] # Measurement: 10 iterations, 1 s each
[info] # Timeout: 10 min per iteration
[info] # Threads: 1 thread, will synchronize iterations
[info] # Benchmark mode: Average time, time/op
@rpless
rpless / gist:8a138111d8895f17cdba
Created September 23, 2015 12:40
Finch Argonaut Benchmark with default Argonaut Parser
[info] Running org.openjdk.jmh.Main -i 10 -wi 10 -f 2 -t 1 io.finch.benchmarks.service.argonaut.*
[error] Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=1024m; support was removed in 8.0
[info] # JMH 1.9.1 (released 152 days ago, please consider updating!)
[info] # VM invoker: /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home/jre/bin/java
[info] # VM options: -Djava.net.preferIPv4Stack=true -XX:+AggressiveOpts -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -XX:ReservedCodeCacheSize=128m -XX:MaxPermSize=1024m -Xss8M -Xms512M -XX:SurvivorRatio=128 -XX:MaxTenuringThreshold=0 -Xss8M -Xms512M -Xmx2G
[info] # Warmup: 10 iterations, 1 s each
[info] # Measurement: 10 iterations, 1 s each
[info] # Timeout: 10 min per iteration
[info] # Threads: 1 thread, will synchronize iterations
[info] # Benchmark mode: Average time, time/op
object Endpoints {
val routes =
get("healthcheck")(healthcheck _) :+:
get("greet" / param("name"))(greeter _)
def healthcheck() { Ok() }
def greeter(name: String) { Ok(s"Hello, $name!") }
}
@rpless
rpless / sse.scala
Created November 3, 2016 11:22
An example of using sse in Finch on my WIP branch
package io.finch.sse
import java.nio.charset.Charset
import cats.Show
import com.twitter.concurrent.AsyncStream
import com.twitter.conversions.time._
import com.twitter.finagle.Http
import com.twitter.finagle.http.Response
import com.twitter.io.Buf
@rpless
rpless / wrk-results.md
Created November 19, 2016 13:43
wrk output for Removing the string conversions from the Circe decoder

Finch + Circe: Current

$ wrk -t4 -c24 -d30s -s examples/src/main/scala/io/finch/wrk/wrk.lua http://localhost:8081/
Running 30s test @ http://localhost:8081/
  4 threads and 24 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency     3.53ms   19.77ms 378.12ms   98.27%
    Req/Sec    13.68k     4.94k   29.80k    70.29%
  1619290 requests in 30.06s, 152.88MB read
Requests/sec: 53862.90
@rpless
rpless / Main.scala
Created February 18, 2017 01:21
Reproduction of Netty 4 Decode issue in Finch 0.13.0
import com.twitter.finagle.Http
import com.twitter.util.Await
import io.finch._
import io.finch.circe._
import io.circe.generic.auto._
case class Foo(a: String)
case class Bar(as: List[Int])
@rpless
rpless / stacktrace.txt
Created November 6, 2017 23:45
Finch #860 stack trace
WARNING: Exception propagated to the default monitor (upstream address: /0:0:0:0:0:0:0:1:65181, downstream address: n/a, label: ).
org.jboss.netty.handler.codec.http.multipart.HttpPostRequestDecoder$ErrorDataDecoderException: java.io.IOException: File name too long
at org.jboss.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.parseBodyAttributes(HttpPostStandardRequestDecoder.java:497)
at org.jboss.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.parseBody(HttpPostStandardRequestDecoder.java:225)
at org.jboss.netty.handler.codec.http.multipart.HttpPostStandardRequestDecoder.<init>(HttpPostStandardRequestDecoder.java:143)
at org.jboss.netty.handler.codec.http.multipart.HttpPostRequestDecoder.<init>(HttpPostRequestDecoder.java:82)
at org.jboss.netty.handler.codec.http.multipart.HttpPostRequestDecoder.<init>(HttpPostRequestDecoder.java:56)
at com.twitter.finagle.http.exp.Multipart$.decodeNonChunked(Multipart.scala:95)
at com.twitter.finagle.http.Request._multipart$lzycomp
@rpless
rpless / kleisli-serialized
Last active December 19, 2021 19:10
Serializing a Circe JsonObject
��sr+io.circe.JsonObject$LinkedHashMapJsonObjectOd�d��L3io$circe$JsonObject$LinkedHashMapJsonObject$$fieldstLjava/util/LinkedHashMap;xrio.circe.JsonObject�G� �&LkleislitLcats/data/Kleisli;xpsrcats.data.KleisliQ���3�LruntLscala/Function1;xpsr!java.lang.invoke.SerializedLambdaoaД,)6�
IimplMethodKind[ capturedArgst[Ljava/lang/Object;LcapturingClasstLjava/lang/Class;LfunctionalInterfaceClasstLjava/lang/String;LfunctionalInterfaceMethodNameq~ L"functionalInterfaceMethodSignatureq~ L implClassq~ LimplMethodNameq~ LimplMethodSignatureq~ LinstantiatedMethodTypeq~ xpur[Ljava.lang.Object;��X�s)lxpq~vq~tscala/Function1tapplyt&(Ljava/lang/Object;)Ljava/lang/Object;tio/circe/JsonObjectt$anonfun$kleisli$1t7(Lio/circe/JsonObject;Ljava/lang/String;)Lscala/Option;t"(Ljava/lang/String;)Lscala/Option;srjava.util.LinkedHashMap4�N\l��Z accessOrderxrjava.util.HashMap���`�F
loadFactorI thresholdxp?@ wtfoosrio.circe.Json$JString"¹�R2(Lvalueq~ xr
io.circe.Json��c�B�Mxptbarx
@rpless
rpless / Main.scala
Last active July 25, 2018 21:48
Finch+Circe Error Accumulation Reporting
import com.twitter.finagle.Http
import com.twitter.util.{Await, Future}
import io.finch._
import io.finch.syntax._
import io.finch.circe.accumulating._
import io.circe._
import io.circe.generic.auto._
case class RequestBody(foo: Boolean, bar: Int)
case class FakeResponse()