Skip to content

Instantly share code, notes, and snippets.

View avdgaag's full-sized avatar

Arjan van der Gaag avdgaag

View GitHub Profile
# quick hacky class to make #111 + #456 possible.
# Make it a textmate command by adding "#!/usr/bin/env ruby -w" to the top
# and "print Color.parse(STDIN.read)" to the bottom.
class Color
OPERATORS = [:+, :-, :*, :/]
def initialize(*args)
if [*args].size == 3
@r, @g, @b = *args
@avdgaag
avdgaag / gist:1446606
Created December 8, 2011 09:56
Test simple page designs in a Rails app
# app/controllers/pages_controller.rb
class PagesController < ApplicationController
def login
end
def forgot_password
end
end
# app/views/pages/login.html.haml
@avdgaag
avdgaag / .gitignore
Created February 13, 2012 14:46 — forked from karmi/.gitignore
Script to generate PDF cards suitable for planning poker from Pivotal Tracker [http://www.pivotaltracker.com/] CSV export. Inspired by Bryan Helmkamp's http://github.com/brynary/features2cards/
.DS_Store
*.csv
*.pdf
@avdgaag
avdgaag / game.rb
Created March 2, 2012 08:58
Text based fighting game
# Make sure you have eventmachine installed and run the server:
#
# ruby -rubygems game.rb
#
# When the server is running, clients can connect and issue commands.
# Currently supported commands:
#
# * look: list the players in the arena.
# * join [nickname]: join the arena using a nickname
# * leave: leave the arena
@avdgaag
avdgaag / roman_numerals.py
Created April 24, 2012 18:29
Kata: Roman Numerals
import unittest
def toRoman(n):
"""
Convert an integer to Roman numerals. Returns an empty string for 0.
"""
if n == 0:
return ''
map = { 1: 'I', 4: 'IV', 5: 'V', 9: 'IX', 10: 'X', 40: 'XL', 50: 'L', 90: 'XC', 100: 'C' }
key = max(k for k, v in map.iteritems() if k <= n)
@avdgaag
avdgaag / _media-queries.scss
Created May 29, 2012 10:54 — forked from anthonyshort/_media-queries.scss
Media Queries in Sass
// Media Queries in Sass 3.2
//
// These mixins make media queries a breeze with Sass.
// The media queries from mobile up until desktop all
// trigger at different points along the way
//
// And important point to remember is that and width
// over the portrait width is considered to be part of the
// landscape width. This allows us to capture widths of devices
// that might not fit the dimensions exactly. This means the break
@avdgaag
avdgaag / sinatra_template.rb
Created July 29, 2012 14:07
Quickly generate a basic Sinatra application
require 'fileutils'
NAME = ARGV[0]
MODULE_NAME = NAME.gsub(/(?:^|_)(.)/) { $1.upcase }
ROOT = File.join(FileUtils.pwd, NAME)
def in_dir(dir)
old_dir = FileUtils.pwd
FileUtils.cd dir
yield
FileUtils.cd old_dir
@avdgaag
avdgaag / gist:3517092
Created August 29, 2012 18:54
Solution to minefield code kata
class SurroundingRange
attr_reader :point, :field
def initialize(point, field)
@point, @field = point, field
end
def points
horizontal = [point.x - 1, 0].max..[point.x + 1, field.width - 1].min
vertical = [point.y - 1, 0].max..[point.y + 1, field.height - 1].min
@avdgaag
avdgaag / gem_template.rb
Created September 29, 2012 10:53
Ruby script to generate a custom Ruby Gem structure, including all sorts of files for RSpec, Yard, Travis etc.
require 'fileutils'
NAME = ARGV[0]
MODULE_NAME = NAME.gsub(/(?:^|_)(.)/) { $1.upcase }
ROOT = File.join(FileUtils.pwd, NAME)
def in_dir(dir)
old_dir = FileUtils.pwd
FileUtils.cd dir
yield
FileUtils.cd old_dir
@avdgaag
avdgaag / command.sh
Last active December 9, 2015 23:49 — forked from anonymous/gist:4346624
Shell one-liner using Ruby to create a histogram from a log file.
export COL=$COLUMNS ; grep '\[CatalogItem\] Retrieved' production.log | awk '{ print $6 $7 }' | ruby -ne 'BEGIN { puts ENV.inspect;$columns = ENV["COL"].to_i; $all = Hash.new { |h,k| h[k] = 0 } }; a, b = $_.split("(").map(&:to_f); next if a < 1; $all[((b/a/100).floor)] += a.to_i; END { max_value = $all.values.max; puts "\e[2J\e[f"; puts "Average request time".center($columns); print "\033[37m" ; puts "ms/req ±50ms".center($columns); print "\033[0m" ; puts ("─" * $columns); $all.keys.sort.each { |k| puts "#{(k * 100 + 50).to_s.rjust(6)}: \033[31m#{"▓" * ($all[k].to_f / max_value * ($columns - 8))}\033[0m"; }; puts "─" * $columns; print "\033[5m\033[35m" ; puts "(╯°□°)╯︵ ┻━┻ © Arjan & Ariejan".center($columns); print "\033[0m" }'