Skip to content

Instantly share code, notes, and snippets.

@bjouhier
bjouhier / fiboCrash.js
Last active December 17, 2015 05:08
Demonstrates crash with V8 generators
function isGenerator(val) {
return Object.prototype.toString.call(val) === "[object Generator]";
}
var PENDING = {};
function run(fn, args, idx) {
var cb = args[idx],
g;
@bjouhier
bjouhier / fibo.js
Last active December 26, 2015 23:19
paris.js 30-10-2013
require('colors');
function* genFibo() {
var f1 = 0, f2 = 1;
while (true) {
console.log(("genFibo loop: " + f1).green)
yield f1;
var f = f1 + f2;
f1 = f2;
f2 = f;
@bjouhier
bjouhier / binding.gyp
Created November 4, 2013 18:43
exception broken in osx addon
{
"targets": [
{
"conditions": [
["OS=='mac'", {
"xcode_settings": {
"GCC_ENABLE_CPP_EXCEPTIONS": "YES"
}
}],
],
@bjouhier
bjouhier / fibers.js
Last active December 30, 2015 08:29 — forked from glennblock/fibers.js
//fibers
function markComplete(postedItems, completionCallback) {
var errors = [];
var getItemToUpdate = function(item) {
var fiber = Fiber.current;
process.nextTick(function() {
client.queryEntity('tasks', 'partition1', item, function(err, task) {
fiber.run(task);
});
@bjouhier
bjouhier / waitForOne._js
Last active August 29, 2015 14:00
waitForOne.js
var galaxy = require('galaxy');
function *waitForOne(futures) {
return yield galaxy.star(function(cb) {
for (var i = 0; i < futures.length; i++) {
galaxy.unstar(futures[i], 0)(function(e, r) {
if (cb) cb(e, r);
cb = null;
});
}
@bjouhier
bjouhier / timedrift.js
Last active April 3, 2017 18:48
timedrift.js
"use strict";
function millis(hr) {
return hr[0] * 1000 + Math.floor(hr[1] / 1000000);
}
function busyWait(ms, cb) {
var hr0 = process.hrtime();
while (millis(process.hrtime(hr0)) < ms);
var elapsed = millis(process.hrtime(hr0));
@bjouhier
bjouhier / fibug.js
Created October 3, 2014 22:43
Crashes node-fibers 1.0.2, at least on OSX
var Fiber = require("./build/Release/fibers").Fiber;
function wrap(fn, idx) {
function F() {
var cb = arguments[idx];
var that = this,
args = arguments;
Fiber(function () {
var val, err = null;
"use strict";
exports.queryAll = function(conn, sql, args, cb) {
var allRows = [];
conn.execute(sql, args, {
resultSet: true
}, function(err, result) {
if (err) return cb(err);
function fetch() {
var oracledb = require('oracledb');
var ez = require('ez-streams');
var cnx = oracledb.getConnection({
user: "scott",
password: "oracle",
connectString: "localhost/ORCL",
}, _);
try {
"use strict";
function assert(i, j) {
if (i !== j) throw new Error("expected " + i + ", got " + j)
}
function callbackIter(fn, n, cb) {
var t0 = Date.now();
(function doIt(i) {
if (i < n) fn(i, function(err, val) {