This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class Array | |
def weighted_random(weight_method=:weight) | |
return nil if empty? # return nil if there's no elements | |
elements = sort_by { Kernel.rand } # shuffle the elements. | |
weights = elements.map(&weight_method) # get the weight for each element (e.g.: 5, 10, 2, 0, 1, 5). | |
point = Kernel.rand * weights.sum # pick a random point between zero and the sum of the weights. | |
elements.zip(weights).each do |e, weight| # walk through each element, | |
return e if weight >= point # and if its weight is >= the point, return it | |
point -= weight # otherwise subtract the element's weight from the point |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'timeout' | |
class RequestTimeout < Merb::Rack::Middleware | |
def initialize(app, seconds) | |
super(app) | |
@seconds = seconds | |
end | |
def deferred?(env) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--- | |
development: &defaults | |
:url: http://0.0.0.0:5984/gathering | |
production: &production | |
<<: *defaults | |
:url: http://0.0.0.0:5984/gathering |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
odds_server = Proc.new do |env| | |
if env['PATH_INFO'] == '/odds' | |
[200, {'Content-Type'=>'application/json'}, '{claim_code:"123-sdfjhsdf"}'] | |
else | |
[404, {}, ''] | |
end | |
end | |
run Rack::Cascade.new([odds_server, Merb::Rack::Application.new]) | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'net/http' | |
require 'rubygems' | |
require 'json' | |
# Mimics the interface of RightAws::SdbInterface, using CouchDB for persistence. | |
# | |
# FS = FakeSimpleDB.new('myapp') | |
# FS.create_domain('mydb') | |
# FS.put_attributes('mydb', 'myitem', { 'Jon' => ['foo', 'bar'] }) | |
# FS.get_attributes('mydb', 'myitem') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// StompService.h | |
// Objective-C Stomp Client | |
// | |
// Implements the Stomp Protocol v1.0, as described here: http://stomp.codehaus.org/Protocol | |
// Requires the AsyncSocket library: http://code.google.com/p/cocoaasyncsocket/ | |
// | |
// This class is in the public domain. | |
// by Scott Raymond <[email protected]>. | |
// |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'memcached' | |
# Provides a hybrid of memoization and memcacheing. Designed for storing an entire (small) | |
# table in memory, in every instance of the app. Works well for reference-type tables | |
# (e.g., Category) which won't ever get big or change often, but are read-heavy. This | |
# allows you to avoid joins, but also avoid the n+1 queries antipattern. | |
# | |
# A pure memoization solution fails when the data *does* change -- all app instances have | |
# to be restarted for the in-memory caches to be correct. A pure memcached solution solves | |
# that, but requires a largish amount of data to be retrieved from memcached for every |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Lo-fi client for the Facebook API. E.g.: | |
# | |
# fb = FacebookClient.new(:api_key => 'api-key', :secret => 'secret') | |
# fb.call 'users.getInfo', :session_key => 'session-key', :uids => 'user-id', :fields => 'birthday' | |
# | |
# by Scott Raymond <[email protected]> | |
# Public Domain. | |
# | |
class FacebookClient | |
def initialize(default_params={}) |
OlderNewer