You can now find this packaged up nicely in a rubygem as rollout-zk.
I've implemented a zookeeper-based storage adapter for [rollout][] that does not require any network roundtrips to check if a feature is active for a user.
| module Zookeeper | |
| class BroadcastTrigger | |
| def initialize(zk, path) | |
| @zk = zk | |
| @path = path | |
| end | |
| def trigger | |
| @zk.set(@path, "#{$$}") | |
| rescue ZK::Exceptions::NoNode |
| Installing hitimes (1.1.1) with native extensions | |
| Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension. | |
| /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb | |
| creating Makefile | |
| make | |
| xcrun cc -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin12.0 -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin12.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -DUSE_INSTANT_OSX=1 -Wall -c hitimes_ext.c | |
| xcrun cc -I. -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin12.0 -I/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/universal-darwin12.0 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -arch i386 -arch x86_64 -g -Os -pipe -fno-common -DENABLE_DTRACE -fno-common -pipe -fno-common -DUSE_INSTANT_OSX=1 -Wall -c hiti |
| class Scheduler < Rufus::Scheduler::PlainScheduler | |
| def initialize(zk, *args) | |
| super(*args) | |
| @zk_locker = zk.exclusive_locker('scheduler') | |
| end | |
| def run | |
| @zk_locker.with_lock do | |
| configure |
You can now find this packaged up nicely in a rubygem as rollout-zk.
I've implemented a zookeeper-based storage adapter for [rollout][] that does not require any network roundtrips to check if a feature is active for a user.
| # from https://github.com/slyphon/zk/issues/68 | |
| require 'zk' | |
| ZK_PATH = '/test/path/child' | |
| CHILD_PATH = ZK_PATH + '/foo' | |
| SLEEP_TIME = 1 | |
| class Writer | |
| def initialize(start_signal, finish_signal) |
| reader: zookeeper: initiating connection to localhost:2181 | |
| reader: zookeeper: #zkc_set_running_and_notify! | |
| reader: zookeeper: #event_thread_body starting event thread | |
| reader: zookeeper: init returned! | |
| reader: zookeeper: event_thread waiting until running: true | |
| reader: zookeeper: event_thread running: true | |
| zookeeper_server: Accepted socket connection from /fe80:0:0:0:0:0:0:1%1:54365 | |
| zookeeper_server: Accepted socket connection from /127.0.0.1:54366 | |
| zookeeper_server: Session establishment request from client /fe80:0:0:0:0:0:0:1%1:54365 client's lastZxid is 0x0 | |
| zookeeper_server: Connection request from old client /fe80:0:0:0:0:0:0:1%1:54365; will be dropped if server is in r-o mode |
| // Originally from: | |
| // * http://blog.stephenboak.com/2011/08/07/easy-as-a-pie.html | |
| // * http://jsfiddle.net/stephenboak/hYuPb/ | |
| // | |
| // Improved by Eric Lindvall to be more d3-ish | |
| function donutChart() { | |
| var width = 450; | |
| var height = 300; | |
| var radius = 100; |
Get metrics from codahale/metrics in realtime.
Requires obfuscurity/tasseo#64
Unfortunately Java's built-in cacerts do not include StartCom SSL root certificates.
Because of this, you must tell java to trust these certificates.
The easiest way I've found to do it is as follows:
| (def levels {:trace org.apache.log4j.Level/TRACE | |
| :debug org.apache.log4j.Level/DEBUG | |
| :info org.apache.log4j.Level/INFO | |
| :warn org.apache.log4j.Level/WARN | |
| :error org.apache.log4j.Level/ERROR | |
| :fatal org.apache.log4j.Level/FATAL}) | |
| (defn set-level | |
| "Set the level for the given logger, by string name. Use: | |
| (set-level \"skuld.node\", :debug)" |