Skip to content

Instantly share code, notes, and snippets.

View brycebaril's full-sized avatar

Bryce Baril brycebaril

View GitHub Profile
@brycebaril
brycebaril / through2_extension.js
Last active December 20, 2015 14:19
A Transform type constructor possible extension for through2
var Transform = require("stream").Transform
var inherits = require("util").inherits
module.exports.ctor = function ctor(fn) {
function T(options) {
if (!(this instanceof T)) return new T(options)
Transform.call(this, options)
}
inherits(T, Transform)
T.prototype._transform = fn
var lvlup = require("levelup")
var db = lvlup("/tmp/source_db")
var batch = 10000
function makeBatch(num) {
var b = []
for (var i = num; i < num + batch; i++) {
b.push({type: "put", key: "z~" + i, value: Math.random()})
fs.readFile('/proc/meminfo', 'utf8', function (err, str) {
var fields = {};
str.split('\n').forEach(function (line) {
var parts = line.split(':');
if (parts.length === 2) {
fields[parts[0]] = parts[1].trim().split(' ', 1)[0];
}
});
cb(fields['MemTotal'] + fields['Buffers'] + fields['Cached']);
> var redis = require("redis")
undefined
> var c = redis.createClient()
undefined
> c.blpop("Dispo", 0, console.log)
true
> null [ 'Dispo', 'foo' ]
var cluster = require('cluster');
var PORT = +process.env.PORT || 1337;
if (cluster.isMaster) {
// In real life, you'd probably use more than just 2 workers,
// and perhaps not put the master and worker in the same file.
cluster.fork();
cluster.fork();
cluster.on('disconnect', function(worker) {
// Short module explanation // Something to gather my thoughts
// // I think this looks cool.
//
module.exports = the_exported_function // Modules are a function. Always.
//
module.exports.extra = extra // Additional API entry points if
module.exports.other = other // desired.
//
var util = require('util') // Other packages from npm or core
var assert = require('assert') // No comma-first due to lots of
#!/bin/bash
if [[ $1 != "-f" ]]; then
echo "### Dry-run mode, specify -f to actually perform deletes.";
fi;
for branch in $(git branch -r --merged origin/master | grep '\<origin/' | grep -v '\<origin/master\>');
do
if [[ -z $(git rev-list $branch --since '1 month') ]]; then
name=$(echo $branch | sed 's/^origin\///');
if [[ $1 = "-f" ]]; then
@brycebaril
brycebaril / gist:4577164
Last active December 11, 2015 08:58 — forked from cxreg/gist:4577093
var async = require('async');
function one(cb) {
console.log("running one");
cb(null, function () { return "one" });
}
function two(cb) {
console.log("running two");
function three(callback){
@brycebaril
brycebaril / nsolid.md
Created September 22, 2015 15:53
So you want to try N|Solid? Here's a simple playlist:

Trying N|Solid

  1. Download the N|Solid Runtime https://downloads.nodesource.com/
  2. tar -xf nsolid-v1.0...
  3. cd nsolid-v1.0...
  4. ./nsolid /path/to/your/app.js

Now let's get tricky

  1. NSOLID_SOCKET=8000 ./nsolid /path/to/your/app.js

Y axis = stack depth X axis = percent of time spent in this function

If a function sits atop another, it was in its callchain and spent time in the callee. The more of a parent that is covered by the things it calls, the less it is doing and the more its children are doing.

This means the two main things (in my experience) to look for are:

  • plateaus -- functions where a lot of time was spent
  • shallow-sloped pyramids -- functions where time was spent up and down the callchain vs any isolated place

In the middle of the wide section you can see a function called "parseGif" which is where we'll focus. This particular flame graph was generated to analyze something inside there -- for the most part I don't care about the rest right now.