Skip to content

Instantly share code, notes, and snippets.

@kasima
kasima / escaped_unicode.rb
Created March 2, 2011 00:48
Generate unicode escape strings
def escaped_unicode(s)
s.unpack("U*").map do |v|
if v == 10
'\n'
elsif v < 256
v.chr
else
'\u{'+v.to_s(16)+'}'
end
end.join
@kasima
kasima / gist:830977
Created February 17, 2011 04:26
Mongoid references_and_referenced_in association assignment bug
class Game
include Mongoid::Document
field :title
references_and_referenced_in_many :players
end
class Player
include Mongoid::Document
field :name
@kasima
kasima / gist:830974
Created February 17, 2011 04:24
Mongoid destroy references_and_referenced_in_many bug
class Game
include Mongoid::Document
field :title
references_and_referenced_in_many :players
end
class Player
include Mongoid::Document
field :name
@kasima
kasima / gist:797650
Created January 26, 2011 22:36
1:1 and 1:many to same class
class Game
include Mongoid::Document
field :title
referenced_in :dungeon_master, :class_name => 'User'
references_and_referenced_in :players, :class_name => 'User'
end
class User
include Mongoid::Document
@kasima
kasima / gist:797594
Created January 26, 2011 22:12
Mongoid::Matchers.matches? bug
class Game
include Mongoid::Document
field :title
references_and_referenced_in_many :players
end
class Player
include Mongoid::Document
field :name
@kasima
kasima / double_closures.py
Created October 18, 2010 09:42
Favorite piece of code I wrote last week
# double closures - what does it mean!?
def if_braintree_disabled(default):
def generate_decorator(f):
def decorator(*args, **kwargs):
if not settings.LIVE_SITE and not settings.BRAINTREE_ENABLED:
return default
else:
return f(*args, **kwargs)
return decorator
return generate_decorator
<html>
<head>
</head>
<body>
</body>
<script type="text/javascript">
function dump_object(obj, seed) {
var s = seed;
s += "<p>" + obj + "</p>";
@kasima
kasima / gist:435005
Created June 11, 2010 20:41
V8 speed tests
require 'rubygems'
require 'v8'
cxt = V8::Context.new
# context switch test
start = Time.now
1000.times { cxt.eval('true') }
@kasima
kasima / gist:433688
Created June 10, 2010 21:44
Ruby #find_all vs V8 filter()
require 'rubygems'
require 'json'
require 'v8'
input = 'suggestions.txt'
suggestions = []
p "Loading suggestions..."
File.open(input, 'r').each { |line| suggestions << line.strip }
@kasima
kasima / gist:432117
Created June 9, 2010 20:25
sinatra v8 suggester
require 'rubygems'
require 'sinatra'
require 'json'
require 'v8'
input = 'suggestions.txt'
suggestions = []
File.open(input, 'r').each { |line| suggestions << line.strip }