Skip to content

Instantly share code, notes, and snippets.

View spullara's full-sized avatar
💭
The mess cannot go into the program, it piles up around the programmer.

Sam Pullara spullara

💭
The mess cannot go into the program, it piles up around the programmer.
View GitHub Profile
@spullara
spullara / JAXRSService.java
Created March 27, 2013 04:13
Initialize JAX-RS in Jetty
Server server = new Server(config.getPort());
final ContextHandlerCollection contexts = new ContextHandlerCollection();
server.setHandler(contexts);
ServletHolder jaxrs = new ServletHolder(ServletContainer.class);
jaxrs.setInitParameter("javax.ws.rs.Application", applicationClassName);
final ServletContextHandler mainHandler = new ServletContextHandler(contexts, "/", true, false);
mainHandler.addServlet(jaxrs, "/*");
@spullara
spullara / PullSpliterator.java
Last active December 14, 2015 18:29
The normal sequential -> parallel spliterator dies with OOME on large streams
package twitterprocessor;
import java.util.List;
import java.util.Spliterator;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.ForkJoinPool;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.function.Consumer;
import java.util.stream.Stream;
@spullara
spullara / User.java
Last active December 14, 2015 17:59
Mustache blog post
class User {
String username;
long createdAt;
}
public void testFunctions2() {
Map<String, Object> scopes = new HashMap<String, Object>();
scopes.put("map", new HashMap<String, String>(){{put("key", "value");}});
final Function<String, String> upperFunction = new Function<String, String>()
{
@Override
public String apply(String aInput)
{
return aInput.toUpperCase();
@spullara
spullara / App.java
Last active December 14, 2015 01:59
Experiments with JDK 1.8 streaming operations
package twitterprocessor;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.model.GetObjectRequest;
import com.amazonaws.services.s3.model.S3Object;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.MappingJsonFactory;
import com.sampullara.cli.Args;
import com.sampullara.cli.Argument;
MappingJsonFactory jf = new MappingJsonFactory();
AtomicInteger lines = new AtomicInteger(0);
for (int i = 0; i < 10; i++) {
long start = System.currentTimeMillis();
Stream<String> br = new BufferedReader(new InputStreamReader(new GZIPInputStream(new FileInputStream(args[0])), "UTF-8")).lines();
if (i % 2 == 0) {
System.out.print("parallel: ");
br = br.parallel();
} else {
System.out.print("serial: ");
@spullara
spullara / vehicle.json
Created February 19, 2013 19:39
Example data gleaned from the Tesla Logger application
{
"vehicle": {
"color": null,
"display_name": null,
"id": XXXXXXXXX,
"option_codes": "MS01,RENA,TM00,DRLH,PF01,BT85,PMTG,RFPO,WTSP,IZMB,IDCF,TR01,SU01,SC01,TP01,AU01,CH00,HP00,PA01,PS00,AD02,X024,X019,X001,X003,X007,X011,X013",
"user_id": XXXXXXXXX,
"vehicle_id": XXXXXXXXX,
"vin": "XXXXXXXXX",
"tokens": [
@spullara
spullara / Pivot.java
Last active September 21, 2020 14:15
JDK 8 experiment where I recreate Excel pivot tables for collections of structured objects.
@Test
public void testPivotTable() {
List<Row> rows = new ArrayList<>();
rows.add(new Row("East", "Boy", "Tee", 10, 12.00));
rows.add(new Row("East", "Boy", "Golf", 15, 20.00));
rows.add(new Row("East", "Girl", "Tee", 8, 14.00));
rows.add(new Row("East", "Girl", "Golf", 20, 24.00));
rows.add(new Row("West", "Boy", "Tee", 5, 12.00));
rows.add(new Row("West", "Boy", "Golf", 12, 20.00));
rows.add(new Row("West", "Girl", "Tee", 15, 14.00));
@spullara
spullara / Rated.java
Last active August 7, 2021 05:27
Output a star rating using Java backing code.
public class Rated {
public Rated(JsonNode node) {
starRating = node.get("rating").intValue();
}
int starRating;
class Star {
boolean active;
@spullara
spullara / App.java
Created January 6, 2013 20:48
JDK8 is going to be great. Webbit is also really nice (based on Netty).
package webserver;
import org.webbitserver.WebServers;
public class App {
public static void main(String[] args) {
WebServers.createWebServer(8080).add((req, res, con) -> {
res.content("Hello, world!").end();
}).start();
}