Skip to content

Instantly share code, notes, and snippets.

View mdespuits's full-sized avatar

Matthew Wells mdespuits

View GitHub Profile
@mdespuits
mdespuits / bench_str_building.rb
Created August 31, 2012 15:31 — forked from alno/bench_str_building.rb
Benchmark: interpolation vs concatenation in Ruby
require 'benchmark'
count = 1_000_000
Benchmark.benchmark do |bm|
bm.report("concat") { count.times { 11.to_s + '/' + 12.to_s } }
bm.report("interp") { count.times { "#{11}/#{12}" } }
end
@mdespuits
mdespuits / some_object_tap_uses.rb
Last active December 10, 2015 18:58
Example uses of Object#tap that I really like
# Logging some action in the console or log file
# Prevents lots of references to a variable
# Maybe not the best example, but potentially cleaner than the alternative
class ApplicationController
after_filter :log_action_without_tap
after_filter :log_action_with_tap
private
def log_action_with_tap
"[ACTION LOG]: #{current_account.name} tried to #{action_name} #{controller_path}".tap{|l|
l << flash.map{|k,v| "#{k}: #{v}"}.join(',') if flash.any?
@mdespuits
mdespuits / account_decorator.rb
Last active December 12, 2015 04:38
Example of a basic decorator that uses `method_missing` rather than Delegation
class AccountDecorator
attr_accessor :account
def initialize(account)
@account = account
end
def method_missing(method_name, *args, &blk)
if account.respond_to?(method_name)
account_method_result(method_name, *args, &blk)
@mdespuits
mdespuits / update_repos.rb
Last active December 14, 2015 08:29
Update all git repositories in a given directory
#!/usr/bin/env ruby
require 'optparse'
require 'ostruct'
require 'pathname'
class Text
attr_reader :string
@mdespuits
mdespuits / dynamic_logger_progname.rb
Last active December 15, 2015 06:29
Singleton Logger wrapper including a progname
require_relative './example_logger'
class ExampleClass
def initialize
ExampleLogger.info("Initializing ExampleClass")
end
end
ExampleClass.new
@mdespuits
mdespuits / fib.rs
Last active December 15, 2015 14:09
My first Rust program
// My first Rust program
// Simply outputs fibbonaci numbers from 20 to 0
use core::task::spawn;
fn fib(number: int) -> int {
if number > 1 {
return fib(number - 1) + fib(number - 2);
} else {
return number;
@mdespuits
mdespuits / performance.rb
Created April 3, 2013 20:44
Array concatenation benchmarks
require 'benchmark'
ITERATIONS = 10_000
Benchmark.bm do |bm|
bm.report("#<< -> #flatten!: ") do
array = [1,2,3]
ITERATIONS.times do
array << [4,5,6]
array.flatten!
@mdespuits
mdespuits / install-erlang.sh
Last active December 20, 2015 00:59
Install Erlang on Mac OS X
#!/bin/sh
#
# Script built from the reference at
# http://digitalsanctum.com/2009/10/01/installing-erlang-on-mac-os-x/
sudo -v
wget http://www.erlang.org/download/otp_src_R16B01.tar.gz
tar -xzf otp_src_R16B01.tar.gz
@mdespuits
mdespuits / setup-ubuntu.sh
Last active December 25, 2015 12:59
Rails setup for Rails production server using Nginx, Git, Postgresql, and the speedy Recap capistrano gem.
#!/bin/sh
sudo apt-get -y update
sudo add-apt-repository ppa:nginx/stable
sudo apt-get -y update
sudo apt-get install -y git-core postgresql-9.1 mysql-server libpq-dev \
curl build-essential zlib1g-dev libssl-dev libreadline6-dev libyaml-dev
cd /tmp
@mdespuits
mdespuits / book.rb
Created August 14, 2018 15:04 — forked from sirupsen/book.rb
Script to import books from Instapaper to Airtable
class Book < Airrecord::Table
class Endorser < Airrecord::Table
self.base_key = ""
self.table_name = "Endorser"
end
self.base_key = ""
self.table_name = "Books"
has_many :endorsements, class: 'Book::Endorser', column: 'Endorsements'