Skip to content

Instantly share code, notes, and snippets.

View medikoo's full-sized avatar

Mariusz Nowak medikoo

View GitHub Profile
@medikoo
medikoo / Firefox quirk
Created March 2, 2010 13:53
Firefox quirk
/**
* First loop will run few hundred times slower
*/
var i, limit = 100000;
var time = +new Date;
for (i = 0; true; ++i) {
if (i > limit) {
@medikoo
medikoo / 450418.gecko-bug.html
Created February 18, 2011 14:30
Firefox (gecko) misaligns absolutely positioned elements, within fieldset that has left or top non zero padding and position set to other than static https://bugzilla.mozilla.org/show_bug.cgi?id=450418
<!DOCTYPE html>
<title>Gecko 450418 bug</title>
<style>
* { margin: 0; padding: 0; }
fieldset {
width: 200px; height: 200px; background: #ddd; border: 0;
position: relative; padding: 20px;
}
div {
width: 100px; height: 100px; background: red;
@medikoo
medikoo / async-to-promise.js
Created June 30, 2011 11:18
Treat low level async functions as promises
var slice = Function.prototype.bind.bind(Array.prototype.slice);
var p = function (fn, args) {
var d = defer();
fn.apply(this, slice(arguments, 1).concat(function (error, result) {
d.resolve((error == null) ? result : error);
}));
return d.promise;
};
@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 || {};
//
// ### 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 / 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));
@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 / 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 / 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 / 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"; }
};