Skip to content

Instantly share code, notes, and snippets.

@elarkin
elarkin / Mutex.js
Created November 24, 2010 03:53
A simple mutex library for node.js v0.3.1
var EventEmitter = require('events').EventEmitter
var Mutex = function() {
var queue = new EventEmitter();
var locked = false;
this.lock = function lock(fn) {
if (locked) {
queue.once('ready',function() {
lock(fn);
});
} else {
@elarkin
elarkin / paramtest.js
Created November 28, 2010 18:24
Proves that eventemitter.emit works as expected.
var sys = require('sys')
var EventEmitter = require('events').EventEmitter
var func = function(arg1, arg2) {
if(arg1 === undefined && arg2 === undefined) {
sys.puts("I was called without parameters");
}
};
var emitter = new EventEmitter();
emitter.on('test',func)
@elarkin
elarkin / proto.js
Created December 16, 2010 04:47
.__proto__.constructor vs .constructor
var A = function A() {};
var B = function B() {};
B.prototype = new A();
// B.prototype.constructor = B; // only way I can find to get bi's constructor to be B. Comment or uncomment this line to produce exactly the same output for both tests. It doesn't matter.
// require('util').inherits(B, A); // same here. Comment or uncomment it doesn't make a difference.
var ai = new A();
var bi = new B();
console.log('Test 1: constructor directly');
@elarkin
elarkin / ExampleRequire.js
Created December 31, 2010 05:03
An example of how module.declare and require would be defined on the client side
window.module = (function() {
var module = {};
var modules = {};
module.require = function require(mod_name) {
return modules[mod_name];
};
module.declare = function declare(f) {
if(typeof f === 'function') {
var m = {};
@elarkin
elarkin / require.async.js
Created June 13, 2011 21:00
require.async
require.async = function require_async(module, continuation) {
//quick! pretend to be async!
continuation(require(module));
//alternately, actually be async:
//process.nextTick(function() {
// continuation(require(module));
//});
};
elarkin-vibes:splat evan.larkin$ gem install soap4r --version '= 1.5.8'
Abort trap
elarkin-vibes:splat evan.larkin$ rake gems:install --trace
(in /Users/evan.larkin/source/splat)
** Invoke gems:install (first_time)
** Invoke gems:base (first_time)
** Execute gems:base
** Invoke environment (first_time)
** Execute environment
=> QueryTrace disabled; CTRL-\ to toggle
@elarkin
elarkin / deps
Created August 4, 2011 18:56
Splat gem dependancies
gem install --version '= 2.3.11' rails
gem install --version '= 1.0.4' uuid
gem install validatable
env ARCHFLAGS="-arch x86_64" gem install mysql -- --with-mysql-config=/usr/local/mysql/bin/mysql_config
gem install --version '2.4.4' facets
gem install --version '4.0.0' htmlentities
gem install httpclient --version '= 2.1.2'
gem install --version '= 0.9.8' mocha
gem install --version '= 1.2.6' fakeweb
gem install --version '= 2.2.0' fattr
@elarkin
elarkin / Gemfile
Created September 12, 2011 16:54
Bundler silently drops dependencies
source :rubygems
gem "chronic", "0.2.3"
gem "main", "4.7.1"
@elarkin
elarkin / master.js
Created September 19, 2011 19:36
Child processes never exit
var child_process = require('child_process');
var child = child_process.fork('./slave.js');
child.on('exit', function() {console.log(1)})
@elarkin
elarkin / gist:4709748
Last active December 12, 2015 03:48
Handling Parsing errors using Rack middleware in Rails 3.2
#in application.rb
module YourApp
class Application < Rails::Application
config.middleware.insert_before ActionDispatch::ParamsParser, "ParsingFailureToJSON"
...
end
end
#The Parsing failure middleware
class ParsingFailureToJSON