Skip to content

Instantly share code, notes, and snippets.

View medikoo's full-sized avatar

Mariusz Nowak medikoo

View GitHub Profile
@medikoo
medikoo / 1.extend.js
Created April 15, 2012 19:43
JavaScript inheritance with *super*. Final solution (ES3 version)
// Inspired partially by Isaac's inherits: https://github.com/isaacs/inherits
// No descriptors involved (needs to work same way on ES3 and ES5 engines)
// In older browsers needs to be run aside es5-shim: https://github.com/kriskowal/es5-shim
var extend = (function () {
'use strict';
var slice = Array.prototype.slice
, call = Function.prototype.call
, wantsSuper = RegExp.prototype.test.bind(/^\s*function\s*\(\s*_super\s*[,\)]/)
@medikoo
medikoo / cs-showcase.js
Created April 23, 2012 07:26
Initial JS for CS showcase can be slightly shorter http://ryanflorence.com/2012/javascript-coffeescript-rewrite/
// No function wrapper as it's CommonJS/NodeJS module
var slice = [].slice
this.events = {
events: {},
on: function (topic, handler, context) {
(this.events[topic] || (this.events[topic] = []))
@medikoo
medikoo / db.deferreds.js
Created July 20, 2012 08:16
Database handling with deferreds
var deferred = require('deferred')
, query = deferred.promisify(DbSource.query).bind(DbSource)
, write = deferred.promisify(DbDest.write).bind(DbDest)
console.log('[INFO]', 'Starting sequence');
var q = 'SELECT A.* FROM BotCCServer A LIMIT 1';
query(q).map(function (data, i) {
var row = data[0];
console.log('[INFO]', 'Each');
@medikoo
medikoo / normal-module.js
Created August 9, 2012 13:12
dom.js v0.3
var domjs = require('domjs');
var tpl = domjs.require('./template'); // DocumentFragment [<header>, <nav>, <article>, <footer>]
@medikoo
medikoo / static-server.js
Created August 10, 2012 08:51
Static server + Webmake
'use strict';
var createServer = require('http').createServer
, staticServer = require('node-static').Server
, webmake = require('webmake')
, rootPath = '/Users/foobar/Projects/my-project'
, publicPath = rootPath + '/public'
, jsProgramPath = rootPath + '/lib/public/main.js';
@medikoo
medikoo / title-router.js
Created August 30, 2012 08:21
Title router
patterns.some(function (data) {
var match;
if (match = url.match(data.pattern)) {
location.title = data.fn(match);
return true;
}
});
@medikoo
medikoo / concurrent.txt
Created October 17, 2012 15:01
When.js not in paranoid mode benchmark
$ node concurrent.js
Promise overhead (concurrent calls) x10000:
1: 309ms Base (plain Node.js lstat call)
2: 440ms When: Dedicated wrapper
3: 543ms Deferred: Dedicated wrapper
4: 625ms Deferred: Promisify (generic wrapper)
5: 682ms Deferred: Map + Promisify
6: 813ms jQuery.Deferred: Dedicated wrapper
7: 2965ms Q: Dedicated wrapper
@medikoo
medikoo / promise-chaining.js
Last active December 10, 2015 13:58
Promise chaining
a.then(null, function () {
// A failed, patch it
}).then(function () {
// B logic
}).then(function () {
// C logic
});
@medikoo
medikoo / promise-sequentially.js
Created February 7, 2013 19:33
Process promises sequentially
var files = [/* list of files */];
var iterate = function () {
var file = files.shift();
return file ? process(file).then(iterate) : null;
};
var process = function (file) {
// ...
return promise;
@medikoo
medikoo / promised.js
Last active December 12, 2015 07:38
versions().invoke('reverse').reduce(function (result, version) {
return install(target, version, prefix)(visitor.bind(null, null), visitor);
}, null).cb(callback);