Skip to content

Instantly share code, notes, and snippets.

View boutell's full-sized avatar

Tom Boutell boutell

View GitHub Profile
// in app.js
var _ = require('lodash');
var Promise = require('bluebird');
// A global context object for accessing the other modules
var modules = {};
// Would be loaded from a server-specific file, each module has some options in its own property sometimes
var options = {};
var async = require('async');
function doItAll(callback) {
return async.parallel([
fnOne,
fnTwo,
fnThree
], callback);
function fnOne(callback) {
// make first request etc., invoke callback
// JavaScript solver for http://blog.plover.com/math/17-puzzle.html
// (Cheesy yet flexible exhaustive search with recursion and eval)
var numbers = [ 6, 6, 5, 2 ];
var operators = [ '*', '/', '+', '-' ];
var goal = 17;
combine(numbers, function(numberSeries) {
if (count(operators, numbers.length - 1, function(operatorSeries) {
// "Write a program that prints the numbers from 1 to 100.
// But for multiples of three print “Fizz” instead of the number
// and for the multiples of five print “Buzz”. For numbers which are
// multiples of both three and five print “FizzBuzz”."
var i;
for (i = 1; (i <= 100); i++) {
var three = !(i % 3);
var five = !(i % 5);
if (three && five) {
@boutell
boutell / gist:01d6bda1956a295c3cbf5fe29ef2c330
Created June 10, 2016 19:45
Minify correctly in A2 0.6
// FOR 0.6
module.exports = {
modules: {
'apostrophe-assets': {
minify: true
}
}
};
@boutell
boutell / gist:2554ff5dfe244413a9d9
Created October 26, 2015 17:47
YAML escaping options
# YAML supports quotation marks
label: "$Revision: 115 $LastChangedDate: 2015-10-26 11:52:27 -0400 (Mon, 26 Oct 2015) $"
# YAML supports multiline strings without quotation marks
# The indentation is significant.
label: >
$Revision: 115
$LastChangedDate: 2015-10-26 11:52:27 -0400 (Mon, 26 Oct 2015) $
@boutell
boutell / gist:0f29e90a7199e40a1df0
Created March 1, 2015 23:46
middleware to unify req.body, req.query, req.params as req.params
app.use(function(req, res, next) {
var params = {};
_.merge(params, req.body || {}, req.query || {}, req.params || {});
req.params = params;
return next();
});
cd /opt/stagecoach/apps/fandm/current
node app fandm:refresh-directory --parallel=4
@boutell
boutell / reverse-linked-list.js
Created February 16, 2015 12:27
Reversing a linked list in JavaScript
var list = {
name: 'bob',
next: {
name: 'dick',
next: {
name: 'harry'
}
}
};
@boutell
boutell / gist:e2acfca73490f1328242
Created December 7, 2014 17:00
nginx reverse proxy for node app in which nginx serves static files directly. Also multiprocess-ready with round robin load balancing.
upstream upstream-EXAMPLE {
server localhost:3000;
# To use additional cores, edit your data/port file
# to read 3000 3001 3002 3003, and list the rest
# of them here too (commented out in this example).
# Your site will listen on one port per process
# automatically. Requires latest deployment files
# as found in sandbox
#server localhost:3001;
#server localhost:3002;