Skip to content

Instantly share code, notes, and snippets.

@bbrowning
bbrowning / openshift_instructions.md
Last active August 22, 2018 15:59
Running Apache OpenWhisk on OpenShift

Running Apache OpenWhisk on OpenShift

Prerequisites

These instructions assume you are using Minishift 1.0.1 or newer as your OpenShift installation.

You'll also need a wsk binary in your $PATH to interact with OpenWhisk after it's deployed. Download the latest version for your OS

source 'https://rubygems.org'
gem 'multi_json'
@bbrowning
bbrowning / Main.java
Last active May 12, 2017 17:39
An example of using Undertow ResponseHeader filters with WildFly Swarm
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.wildfly.swarm.config.undertow.FilterConfiguration;
import org.wildfly.swarm.config.undertow.configuration.ResponseHeader;
import org.wildfly.swarm.config.undertow.server.host.FilterRef;
import org.wildfly.swarm.container.Container;
import org.wildfly.swarm.undertow.UndertowFraction;
import org.wildfly.swarm.undertow.WARArchive;
public class Main {
public static void main(String... args) throws Exception {
@bbrowning
bbrowning / jvm-npm.diff
Last active September 16, 2015 13:19
undertow.js w/ jvm-npm.js
--- jvm-npm.js.orig 2015-09-16 09:19:07.007874748 -0400
+++ jvm-npm.js 2015-09-15 16:25:25.607810957 -0400
@@ -237,7 +237,7 @@
function resolveCoreModule(id, root) {
var name = normalizeName(id);
var classloader = java.lang.Thread.currentThread().getContextClassLoader();
- if (classloader.findResource(name))
+ if (classloader.findResource(name, false))
return { path: name, core: true };
}
num_runtimes = 10
puts "Creating runtimes..."
num_runtimes.times do
instance = org.jruby.Ruby.newInstance
instance.evalScriptlet <<-EOS
require "socket"
server = TCPServer.new(0)
Thread.new do
begin
@bbrowning
bbrowning / indexed_queue.diff
Created May 18, 2015 15:58
These are benchmark results of an implementation of async.queue based on maintaining an index into the queue as items are processed instead of shifting items off the queue. The new implementation is shown as "indexed async.queue" in the benchmark results, with the old one shown as "upstream async.queue". For larger queues, the performance differ…
diff --git a/lib/async.js b/lib/async.js
index 394c41c..8d91ab5 100644
--- a/lib/async.js
+++ b/lib/async.js
@@ -832,6 +832,120 @@
return q;
};
+ async.indexedQueue = function (worker, concurrency) {
+ if (concurrency === undefined) {
@bbrowning
bbrowning / double_load.rb
Created January 23, 2015 15:12
JRuby 9k double loading file if explicit require and autoload are used
autoload :ProxyObject, 'proxy_object.rb'
require 'proxy_object'
@bbrowning
bbrowning / output.txt
Last active August 29, 2015 14:11
RubyGems 2.4.5 triggers JRuby logic error when loading Java extensions from absolute paths
$ bin/jruby -S gem install atomic
Fetching: atomic-1.1.16-java.gem (100%)
Successfully installed atomic-1.1.16-java
1 gem installed
$ bin/jruby ~/tmp/rubygems_java_ext_broken.rb
absolute paths are broken
relative paths work
@bbrowning
bbrowning / json_contention.rb
Created December 16, 2014 15:09
Simple script to demonstrate the json gem's multithreaded contention problem.
require 'benchmark'
require 'json/ext'
NUM_THREADS = 40
NUM_PARSES = 20_000
def run_test(json)
puts Benchmark.measure {
threads = NUM_THREADS.times.map do
Thread.new do
@bbrowning
bbrowning / json_contention.rb
Created December 16, 2014 15:08
Simple script to demonstrate the json gem's multithreaded contention problem.
require 'benchmark'
require 'json/ext'
NUM_THREADS = 40
NUM_PARSES = 20_000
def run_test(json)
puts Benchmark.measure {
threads = NUM_THREADS.times.map do
Thread.new do