Skip to content

Instantly share code, notes, and snippets.

View dekellum's full-sized avatar
💭
I may be slow to respond.

David Kellum dekellum

💭
I may be slow to respond.
View GitHub Profile
# Started with something like this
class GoKart
def initialize( strategy = nil )
@strategy = strategy
end
def drive
if @strategy == :reverse
puts "Reverse"
else
# GoKart becomes a module
module GoKart
# GoKart.new becomes a factory method for strategy classes
def self.new( strategy = nil )
( strategy == :reverse ) ? ReverseStrategy.new : ForwardStrategy.new
end
class ForwardStrategy
def drive
@dekellum
dekellum / kernel.spec
Created March 16, 2013 18:25
Fedora 17 custom 3.4.36 kernel spec (derived from kernel-3.4.6-2.fc17.src.rpm)
# We have to override the new %%install behavior because, well... the kernel is special.
%global __spec_install_pre %{___build_pre}
Summary: The Linux kernel
# For a stable, released kernel, released_kernel should be 1. For rawhide
# and/or a kernel built from an rc or git snapshot, released_kernel should
# be 0.
%global released_kernel 1
@dekellum
dekellum / const-benchmark.rb
Last active June 23, 2016 22:49
Benchmark constant access vs two ways to support overrides in derived class
#!/usr/bin/ruby
# Adapted from https://github.com/bbatsov/ruby-style-guide/issues/328#issuecomment-227967489
require 'benchmark'
n = 5000000
$priv_const = ( ARGV[0] == 'priv_const' )
@dekellum
dekellum / Rakefile
Last active January 8, 2021 23:30
Important Crate Dependencies, shared on tokio ecosystem discord
desc "Generate svg/png's from Graphviz dot diagrams"
task :dot
FileList[ '*.dot' ].each do |dot|
svg = dot.sub( /(\.dot)$/, '.svg' )
png = dot.sub( /(\.dot)$/, '.png' )
file svg => [ dot ] do
sh "dot -Tsvg -o #{svg} #{dot}"
end
@dekellum
dekellum / gist:4171049
Created November 29, 2012 18:44
powerset in clojure using sets,union
(ns powerset.core-test
(:use (clojure set test)))
(defn powerset [s]
(apply union
#{s} ;the complete set of all s
(map (fn [i] (powerset (disj s i))) s)))
(deftest test-powerset
(is (= #{#{}}