Skip to content

Instantly share code, notes, and snippets.

Brad Fults h3h

Block or report user

Report or block h3h

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View hash.rb
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 Mar 10, 2011
You know, for objects.
View active_record_from_hash.rb
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 Jun 8, 2011
My global .gitconfig
View .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 Aug 24, 2011
Ruby's `alias_method` Behavior
View gist:1168967
>> 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 Sep 5, 2011
Don't Convert Arrays to Sets for Inclusion Checks
View to_set_performance.rb
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 Sep 12, 2011
Ruby Array Enumerator Return Values
View array_inheritance.rb
>> class MyArray < Array; end
=> nil
>> a = MyArray.new([1,2,3])
=> [1, 2, 3]
>> a.class
=> MyArray
>> a.reject {|x| x > 2}.class
View apple-whois.txt
$ 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 Jan 26, 2012
Get Request per Second Stats from Tokyo Tyrant
View gist:1685499
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
View after_use_bundler
#!/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 Apr 6, 2012
Perl to Ruby Regular Expression Conversion
View rubify_regexp.rb
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
You can’t perform that action at this time.