Skip to content

Instantly share code, notes, and snippets.

#!/usr/bin/python
import socket
import struct
import sys
# We want unbuffered stdout so we can provide live feedback for
# each TTL. You could also use the "-u" flag to Python.
class flushfile(file):
def __init__(self, f):
require "tempfile"
require 'spec/runner/formatter/html_formatter'
require "cgi"
# When we're running specs, modify our class under test to create
# an image tag when it is inspected.
class Tree
def inspect
file = Tempfile.new("debug-tree")
self.to_image(file.path)
@pnc
pnc / delegate_proc.rb
Created October 23, 2010 16:15
Groovy's delegate method, implemented for Ruby Procs
# The idea here is to emulate Groovy's delegate= pattern for closures.
# We define a builder module. This will receive method calls
# from our builder. It could be an instance of an object if we wanted.
module FamilyBuilder
def self.parent(name)
puts "Parent: #{name}"
end
def self.child(name)
@pnc
pnc / gist:645582
Created October 25, 2010 19:42
Job scheduler using greedy algorithm
(require racket/pretty)
(define (job start end) (list start end))
(define (job-with-duration start duration)
(job start
(+ start duration)))
(define (job-end job)
(second job))
Nebula:mailcatcher(master) $ rake --trace
(in /Users/phil/Development/ruby/mailcatcher)
** Invoke default (first_time)
** Invoke build (first_time)
** Invoke build:sass (first_time)
** Execute build:sass
** Invoke build:coffee (first_time)
** Execute build:coffee
** Invoke build:rdoc (first_time)
** Invoke rdoc (first_time)
@pnc
pnc / ruby_block.rb
Created June 28, 2011 15:50
Ruby blocks and required parentheses
def group(symbol, &block)
block.call
end
symbol = :cheese
# Simple argument-and-block form:
group symbol do
puts "hello"
end # => "hello"
@pnc
pnc / deprecation.rb
Created July 26, 2011 01:18
Moar deprecation warnings
set_trace_func(Proc.new do |event, file, line, id, binding, classname|
if rand > 0.999
puts "warning: #{classname} is deprecated and will be removed in a future release"
puts " (called from: #{file}:#{line})"
end
end)
@pnc
pnc / troll.js.coffee
Created August 4, 2011 14:00
This is what happens when you work with Emacs users.
(for own key, value of assignable_attributes
attribute_scope = $('#reservation_' + key)
attribute_scope.val(value)
attribute_scope.change()
)
(for own key, value of ui.item.attribute_labels
$(".reservation-label-#{key}").html(value)
)
@pnc
pnc / AppDelegate.m
Created January 10, 2012 18:17
Core Data -willSave example
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSError *error = nil;
// Load the data model
NSManagedObjectModel *model = [NSManagedObjectModel mergedModelFromBundles:nil];
// Set up the SQLite store
NSURL *documentsDirectory = [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
NSURL *storeURL = [documentsDirectory URLByAppendingPathComponent:@"Example.sqlite"];
@pnc
pnc / AppDelegate.m.patch
Created April 6, 2012 18:05
Fix to Marcus Zarra's consecutive migration code
--- 1.txt 2012-04-06 14:09:33.000000000 -0400
+++ 2.txt 2012-04-06 14:09:45.000000000 -0400
@@ -119,28 +119,35 @@
}
//END:progressivelyMigrateURLFindModels
//See if we can find a matching destination model
//START:progressivelyMigrateURLFindMap
NSMappingModel *mappingModel = nil;