Skip to content

Instantly share code, notes, and snippets.

View h3h's full-sized avatar

Bradford Fults h3h

View GitHub Profile
@h3h
h3h / hash.rb
Created March 10, 2011 00:09
Hash#&
class Hash
# Intersection on hash keys (and values) that actually returns a Hash.
# The RHS can be an Array or a Hash.
#
# == Examples:
# >> hsh = {:banana => "elephant", :bar => "foo", :baz => "wuux"}
# >> hsh & [:bar]
# => {:bar=>"foo"}
#
# >> hsh & {:bar => "foo", :baz => "wuux"}
@h3h
h3h / active_record_from_hash.rb
Created March 10, 2011 00:34
You know, for objects.
require 'active_support/core_ext/hash/keys'
# Intended as an extension for an ActiveRecord model. It allows construction
# of a valid ActiveRecord object from a Hash, including proper handling of
# the :id attribute.
module ActiveRecordFromHash
def from_hash(hsh)
hsh = hsh.symbolize_keys
self.new.tap do |obj|
@h3h
h3h / .gitconfig
Created June 8, 2011 17:54
My global .gitconfig
[user]
name = Brad Fults
email = bfults@gmail.com
[alias]
amend = commit --amend
co = checkout
st = status
cp = cherry-pick
# edit config (global, local)
@h3h
h3h / gist:1168967
Created August 24, 2011 19:32
Ruby's `alias_method` Behavior
>> class Foo
> def bar; 1 end
> alias_method :baz, :bar
> end
=> Foo
>> class FooTwo < Foo
> def bar; 2 end
> end
=> nil
@h3h
h3h / to_set_performance.rb
Created September 5, 2011 00:58
Don't Convert Arrays to Sets for Inclusion Checks
ids = (1..1_000_000).to_a; nil
x = rand(1_000_000)
Benchmark.realtime do
10.times do
ids.to_set.include?(x)
end
end
# => 14.3837828636169
@h3h
h3h / array_inheritance.rb
Created September 12, 2011 06:09
Ruby Array Enumerator Return Values
>> class MyArray < Array; end
=> nil
>> a = MyArray.new([1,2,3])
=> [1, 2, 3]
>> a.class
=> MyArray
>> a.reject {|x| x > 2}.class
$ whois apple.com
Whois Server Version 2.0
Domain names in the .com and .net domains can now be registered
with many different competing registrars. Go to http://www.internic.net
for detailed information.
APPLE.COM.WWW.BEYONDWHOIS.COM
APPLE.COM.WAS.PWNED.BY.M1CROSOFT.COM
@h3h
h3h / gist:1685499
Created January 26, 2012 22:25
Get Request per Second Stats from Tokyo Tyrant
irb(main):033:0> stats = lambda { TokyoTyrantHandle.connection.current_connection.stat.split("\n").map {|i| vs=i.split("\t"); [vs[0] => vs[1]] }.flatten.inject({}) { |a,s| a.merge(s.keys.first => s.values.first) }.values_at('cnt_get', 'cnt_fwmkeys', 'cnt_put', 'cnt_out').map(&:to_i) }; res = 10.times.map { sleep 10; stats.call }
=> [[1414054383, 267722854, 668732970, 113985517], [1414055664, 267724365, 668733951, 113986564], [1414057054, 267725847, 668734993, 113987897], [1414058401, 267727235, 668735983, 113988827], [1414059735, 267728810, 668736976, 113989342], [1414061000, 267730358, 668737930, 113989818], [1414062189, 267731965, 668738915, 113990122], [1414063283, 267733524, 668739810, 113990639], [1414064276, 267734965, 668740685, 113990822], [1414065384, 267736397, 668741558, 113991083]]
irb(main):038:0> pp res.each_cons(2).map {|set_a, set_b| (0..3).map {|i| (set_b[i] - set_a[i]) / 10.0}}[[128.1, 151.1, 98.1, 104.7], [139.0, 148.2, 104.2, 133.3],
[134.7, 138.8, 99.0, 93.0],
[133.4, 157.5, 99.3, 51.5
#!/usr/bin/env bash
BUNDLER_BIN_PATH=""
# see BUNDLE_BIN is set in the current directories .bundle/config
if grep BUNDLE_BIN .bundle/config >/dev/null 2>/dev/null
then
BUNDLER_BIN_PATH=$(grep BUNDLE_BIN .bundle/config | cut -d ' ' -f 2 -)
# Expand the bundler stub path
eval BUNDLER_BIN_PATH=$BUNDLER_BIN_PATH
@h3h
h3h / rubify_regexp.rb
Created April 6, 2012 18:38
Perl to Ruby Regular Expression Conversion
POSSIBLE_OPTIONS = "[misxp]"
def rubify_regexp(l)
re = l.gsub(/\(\?(#{POSSIBLE_OPTIONS}*)(?:-(#{POSSIBLE_OPTIONS}*))?:/) do |_|
enabled = $1
disabled = $2
# Perl's `s` option is `m` in Ruby
if enabled.include?('s') && !enabled.include?('m')
enabled.sub!('s', 'm')
else