Skip to content

Instantly share code, notes, and snippets.

@cgbystrom
cgbystrom / netperf_tcp_crr_reports.markdown
Created May 22, 2011 13:41
Reports for netperf's TCP_CRR test

Reports for netperf's TCP_CRR test (i.e TCP accept() performance)

Below is list of results collected with netperf. The interesting value is TCP_CRR, it measures how fast it can TCP connect/request/response/receive. In short, the transaction rate. The test is used to simulate a normal HTTP/1.0 transaction. What's worrying is that this value has very low on Xen virtualized guests. Performance differences between bare metal and virtualization has been as high as 2-3x.

@cgbystrom
cgbystrom / node.js vs Python
Created December 1, 2010 20:56
node.js vs Python with Greenlets
/*
node.js vs Python with Greenlets (say gevent)
I don't get why node.js is being so hyped.
Sure, the idea of writing things in JavaScript both on the client and server-side is really nice.
And JavaScript really fit an event-driven environment with its browser heritage.
But why on earth is boomerang code so appealing to write? I don't get. Am I missing something obvious?
All examples of node.js I see are littered with callbacks yet Ryan Dahl thinks coroutines suck. It doesn't add up for me.
@cgbystrom
cgbystrom / cors_middleware.py
Created June 27, 2012 12:06
WSGI middleware for serving CORS compatible requests
class CORSMiddleware(object):
"""Enable serving of CORS requests (http://en.wikipedia.org/wiki/Cross-origin_resource_sharing)"""
ALLOW_ORIGIN = "*"
ALLOW_HEADERS = "Origin, X-Requested-With, Content-Type"
def __init__(self, app):
self.app = app
def __call__(self, environ, start_response):
@cgbystrom
cgbystrom / BUILD
Created November 9, 2017 20:08
Minimal Go app built with Bazel
package(default_visibility = ["//visibility:public"])
load("@io_bazel_rules_go//go:def.bzl", "go_prefix", "go_binary")
go_prefix("helloworld")
go_binary(
name = "helloworld",
srcs = ["helloworld.go"],
)
import java.net.InetSocketAddress;
import java.util.concurrent.Executors;
import java.util.HashMap;
import java.util.Map;
import org.jboss.netty.bootstrap.ServerBootstrap;
import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
import org.jboss.netty.channel.*;
import static org.jboss.netty.channel.Channels.pipeline;
import org.jboss.netty.handler.codec.http.*;
@cgbystrom
cgbystrom / npm-linked-pkgs.js
Created October 15, 2014 21:37
Get a list of all NPM linked packages
var util = require('util');
var exec = require('child_process').exec;
function getNpmLinkedPackages (callback) {
exec('npm list --global', function (error, stdout, stderr) {
if (error) return callback(error);
if (stderr.length > 0) return callback(stderr);
var pkgs = stdout
.split('\n')
@cgbystrom
cgbystrom / canvas-logger.js
Created February 16, 2015 19:28
Log calls made to HTML Canvas context (only works with 2D)
function hookCanvasGetContext () {
var ctxFns = [
'fillRect',
'save',
'restore',
'scale',
'rotate',
'translate',
'transform',
'setTransform',
@cgbystrom
cgbystrom / parse_route53_usage.py
Created March 5, 2012 10:53
Prints usage for Amazon Route 53 zones for a given time period
"""
Prints usage for Route 53 for a given time period
(exported from the Amazon Route 53 usage console).
"""
import csv
route53_reader = csv.reader(open('route_53_usage_february_2012.csv', 'rb'), delimiter=',', quotechar='|')
route53_reader.next() # Skip header
zone_lookup = dict('INSERT_ZONE_ID'='mydomain.com')
@cgbystrom
cgbystrom / LatencySimulatorHandler.java
Created October 31, 2011 14:50
Netty event latency simulator
import org.jboss.netty.channel.*;
import org.jboss.netty.util.HashedWheelTimer;
import org.jboss.netty.util.Timeout;
import org.jboss.netty.util.Timer;
import org.jboss.netty.util.TimerTask;
import java.util.concurrent.TimeUnit;
/**
* Simulates latency of Netty events
@cgbystrom
cgbystrom / actstream.py
Created October 12, 2011 21:15
Simple proof-of-concept implementing an activity stream on top of Cassandra
# Naive implementation of an activity stream service using Cassandra.
# Just a proof of concept and not anything that is for production use.
# Probably flawed in many ways like proper key usage, writing and features.
import pycassa
import datetime
import uuid
pool = pycassa.connect('Actstream')