Skip to content

Instantly share code, notes, and snippets.

@chrismdp
chrismdp / s3.sh
Last active March 5, 2024 12:57
Uploading to S3 in 18 lines of Shell (used to upload builds for http://soltrader.net)
# You don't need Fog in Ruby or some other library to upload to S3 -- shell works perfectly fine
# This is how I upload my new Sol Trader builds (http://soltrader.net)
# Based on a modified script from here: http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash
S3KEY="my aws key"
S3SECRET="my aws secret" # pass these in
function putS3
{
path=$1
@chrismdp
chrismdp / http
Last active May 5, 2021 18:54
Simple http server in ruby, that ensures there's no browser caching. For serving static files in development. I copy this into my ~/bin directory.
#!/usr/bin/env ruby
require 'webrick'
class NonCachingFileHandler < WEBrick::HTTPServlet::FileHandler
def prevent_caching(res)
res['ETag'] = nil
res['Last-Modified'] = Time.now + 100**4
res['Cache-Control'] = 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0'
res['Pragma'] = 'no-cache'
res['Expires'] = Time.now - 100**4
Fiduciary License Agreement 2.0
based on the
Individual Contributor exclusive License Agreement
(including the TRADITIONAL PATENT LICENSE OPTION)
Thank you for your interest in contributing to Think Code Learn Ltd t/a Revelation Games's Tiny King ("We" or "Us").
The purpose of this contributor agreement ("Agreement") is to clarify and document the rights granted by contributors to Us. To make this document effective, please follow the instructions at ____________________.
0. Preamble
def assert_equal(expected, actual)
print expected == actual ? "." : "Expected #{expected}, but got #{actual}\n"
end
class PriceRule
def initialize(code, price)
@code = code
@price = price
end
@chrismdp
chrismdp / bootstrap_chef.bash
Created June 15, 2011 07:12 — forked from michaelvobrien/bootstrap_chef.bash
Bootstrap Chef Solo on Ubuntu
#!/usr/bin/env bash
# call like this on the target server:
# NODENAME='foo' CHEF_ENV='production' RUNLIST='["role[foo]","recipe[bar]"]' CHEFREPO='git@example.com:repo.git' bash <( curl -L https://raw.github.com/gist/1026628 )
# You will need to ensure that the ssh key is already set up on the server.
set -e
export CHEF_DIR="${HOME}/chef"
sudo rm -rf $CHEF_DIR
mkdir -p "$CHEF_DIR"
@chrismdp
chrismdp / plus.rb
Created October 3, 2018 14:34
Plus / Sandwich solution
def plus(num)
(1..num).to_a.map {|x| yield(x) }.join
end
p plus(3) { "ding" }
p plus(3) { |x| "...#{x}" }
p plus(5) { |x| (x + 2).to_s }
def sandwich(layers = 1, &block)
@chrismdp
chrismdp / -
Created December 5, 2017 11:28
def assert_equal(expected, actual)
print expected == actual ? "." : "Expected #{expected.inspect} but got #{actual.inspect}\n"
end
Discount = Struct.new(:amount, :value) do
def apply(basket, item)
(basket.count(item)/amount) * value
end
end
@chrismdp
chrismdp / achievements.sh
Last active June 7, 2017 15:39
ImagicMagick + Shell script to generate my Kickstarter reward chart on this campaign: https://www.kickstarter.com/projects/chrismdp/ealdorlight?ref=2q0zxb
#!/bin/bash
TITLE_BG=title-bg.png
EL_BG=el-circle.png
OUT=achievements.png
# A colon-seperated rewards list.
# First column is the type of reward:
# <text> - a text number.
# Columns are alpha divisor (eg 4 is 25%), percentage complete, big number, smaller label and text description.
def assert_equal(expected, actual)
print expected == actual ? "." : "Expected #{expected.inspect} but got #{actual.inspect}\n"
end
class SummingRule
def initialize(item, price)
@item = item
@price = price
end
class Checkout
def initialize
@total = 0
end
PRICES = { "Apple" => 30, "Banana" => 50 }
def scan(item)
@total += PRICES[item]
end