Skip to content

Instantly share code, notes, and snippets.

View medikoo's full-sized avatar

Mariusz Nowak medikoo

View GitHub Profile
@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 / 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 / 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 / fat-arrow.js
Created April 13, 2012 08:42
JavaScript fat arrow function
// ES6:
var Foo = {
getValue: () => "Foo value",
somethingUseful: () => this.getValue();
}
// same in ES5:
var Foo = {
getValue: function () { return "Foo value"; }
};
@medikoo
medikoo / guid.js
Created March 16, 2012 18:14
Proposal for JavaScript GUID
// http://old.nabble.com/Re%3A-UUIDs--p33511279.html
(~~(Math.random() * 1e9)).toString(36) + Date.now()
@medikoo
medikoo / file-upload.js
Created November 15, 2011 16:41
File upload with xmlHttpRequest and FormData
var files = input.files;
var fd = new FormData();
var xhr = new XMLHttpRequest();
fd.append('file[0]', file[0]);
fd.append('file[1]', file[1]);
xhr.open('POST', '/upload', true);
xhr.send(fd);
@medikoo
medikoo / oop.js
Created October 17, 2011 13:25
OOP in JS
// Constructor way:
var Class = function (value) {
this.value = value;
};
Class.prototype = {
property: 'value',
method: function () {}
};
var obj = new Class(value);
@medikoo
medikoo / slice.js
Created October 4, 2011 18:28
Fast direct slice
var slice = (function (slice) {
return function (list, start, end) {
return slice.call(list, start, end);
};
}([].slice));
//
// ### function randomString (bits)
// #### @bits {integer} The number of bits for the random base64 string returned to contain
// randomString returns a pseude-random ASCII string which contains at least the specified number of bits of entropy
// the return value is a string of length ⌈bits/6⌉ of characters from the base64 alphabet
//
helpers.randomString = exports.randomString = function (bits) {
var chars, rand, i, ret;
chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_-';
@medikoo
medikoo / rimraf.js
Created August 9, 2011 12:01 — forked from bjouhier/rimraf.js
rimraf with deferred/promise
var path = require('path')
, fs = require('fs')
, deferred = require('deferred'), delay = deferred.delay
, promisify = deferred.promisify
, lstat = promisify(fs.lstat), unlink = promisify(fs.unlink), readdir = promisify(fs.readdir)
, rmdir = promisify(fs.rmdir)
var timeout = 0;
var rimraf = module.exports = function (p, opts) {
opts = opts || {};