Skip to content

Instantly share code, notes, and snippets.

View mde's full-sized avatar

Matthew Eernisse mde

View GitHub Profile
@mde
mde / gist:2c4fe6906db45d652b88
Created June 9, 2014 01:52
Escape any escape sequences in a string
var escapeEscapeSequences = function (str) {
return str
.replace(/[\\]/g, '\\\\') // Slash has to go first
.replace(/[\b]/g, '\\b')
.replace(/[\f]/g, '\\f')
.replace(/[\n]/g, '\\n')
.replace(/[\r]/g, '\\r')
.replace(/[\t]/g, '\\t');
};
@mde
mde / gist:c07995770e5b8e960802
Created May 9, 2014 03:10
Sample Nginx config
upstream foo_site {
server 127.0.0.1:4000;
}
server {
listen 80;
server_name www.foo.com foo.com;
access_log /var/log/nginx/foo_site.access.log;
location / {
proxy_pass http://foo_site;
}
@mde
mde / gist:9216297
Last active August 29, 2015 13:56
Simple Node HTTP proxy
var http = require('http')
, server = http.createServer();
server.on('request', function (serverReq,
serverResp) {
var host = 'www.example.com'
, opts
, clientRequest
, handle;
@mde
mde / gist:8965696
Created February 12, 2014 22:18
Thrown error in Mongo callback not caught by domain
var http = require('http')
, domain = require('domain')
, mongo = require('mongodb')
, config = {
username: null
, dbname: null
, prefix: null
, password: null
, host: 'localhost'
, port: 27017
task('foo', {async: true}, function () {
console.log('entered foo');
setTimeout(complete, 10);
console.log('after foo timeout');
});
task('default', {async: true}, function () {
var t = jake.Task.foo;
t.on('complete', function () {
console.log('foo completed');
@mde
mde / gist:7810003
Last active December 30, 2015 09:29
"foo" task for creating a new Foo instance
task('foo', {async: true}, function () {
var f = geddy.model.Foo.create({title: 'zerb', description: 'frang'});
f.save(function (err, data) {
if (err) { throw err; }
geddy.model.Foo.all({id: f.id}, function (err, data) {
if (err) { throw err; }
console.log('Found foo', data[0].id);
geddy.model.Foo.first({id: f.id}, function (err, data) {
if (err) { throw err; }
console.log('Found foo again', data.id);
var
// $ npm install model@0.2.10
model = require( 'model'),
Adapter = require('./node_modules/model/lib/adapters/memory/').Adapter,
adapter = new Adapter({});
var User = function () {
this.adapter = adapter;
this.property('login', 'string', {required: true});
this.property('password', 'string', {required: true});
// Determine if `content` is a collection of models
else if(content instanceof Array) {
if(!type) {
throw new Error(
'Cannot determine model type from empty array, specify one in opts');
}
@mde
mde / gist:6223332
Created August 13, 2013 17:09
Two overlapping experiments
<%
var msg = '';
if (testA) {
msg += '<div>group</div>';
}
if (testB || testA) {
msg += '<div>conversation</div>';
}
%>
<%= msg; %>
@mde
mde / gist:6100679
Last active December 20, 2015 08:29 — forked from admc/gist:6100677
var User = function () {
this.hasMany('Messages');
this.hasMany('ConversationMemberships');
this.hasMany('Conversations', {through: 'ConversationMembership'});
};
var Conversation = function () {
this.hasMany('Messages');
this.hasMany('ConversationMemberships');
this.hasMany('Users', {through: 'ConversationMembership'});