This gist's comment stream is a collection of webdev apps for OS X. Feel free to add links to apps you like, just make sure you add some context to what it does — either from the creator's website or your own thoughts.
— Erik
// node: | |
var moment = require('moment'); | |
moment().add('days', 2).fromNow(); | |
// 'in 2 days' | |
moment().subtract('days', 2).fromNow(); | |
// '2 days ago' | |
moment('November 1977').fromNow() |
// | |
// injection-proxy.js | |
// Emil Stenqvist <emsten@gmail.com> | |
// | |
// Free for all! | |
// | |
// A content-replacing proxy in node.js. | |
// | |
// I made this for debugging JavaScript on a live website. | |
// |
var MultiGetSet = function(opt){ | |
var getType = function(o) { | |
return ({}).toString.call(o).match(/\s([a-zA-Z]+)/)[1].toLowerCase() | |
}; | |
if(!opt.public || !opt.private) | |
return opt.public; | |
if(opt.handler && opt.handler.init) |
git symbolic-ref HEAD refs/heads/empty | |
touch .gitignore | |
git add .gitignore | |
git commit -m 'Initial headless branch commit' |
// polyfill window.getMatchedCSSRules() in FireFox 6+ | |
if ( typeof window.getMatchedCSSRules !== 'function' ) { | |
var ELEMENT_RE = /[\w-]+/g, | |
ID_RE = /#[\w-]+/g, | |
CLASS_RE = /\.[\w-]+/g, | |
ATTR_RE = /\[[^\]]+\]/g, | |
// :not() pseudo-class does not add to specificity, but its content does as if it was outside it | |
PSEUDO_CLASSES_RE = /\:(?!not)[\w-]+(\(.*\))?/g, | |
PSEUDO_ELEMENTS_RE = /\:\:?(after|before|first-letter|first-line|selection)/g; | |
// convert an array-like object to array |
# Convert any YouTube video into an audio file you can listen to on the go, using: | |
# http://rg3.github.com/youtube-dl/ | |
{ ~ } > brew install ffmpeg | |
{ ~ } > wget https://raw.github.com/rg3/youtube-dl/2012.02.27/youtube-dl | |
{ ~ } > chmod u+x youtube-dl | |
# Pick which video format you want to download.. (use any YT video link) | |
{ ~ } > ./youtube-dl -s -F http://www.youtube.com/watch?v=vT1KmTQ-1Os |
/* ---------------------------------------------------------- */ | |
/* */ | |
/* A media query that captures: */ | |
/* */ | |
/* - Retina iOS devices */ | |
/* - Retina Macs running Safari */ | |
/* - High DPI Windows PCs running IE 8 and above */ | |
/* - Low DPI Windows PCs running IE, zoomed in */ | |
/* - Low DPI Windows PCs and Macs running Firefox, zoomed in */ | |
/* - Android hdpi devices and above */ |
app.filter('bytes', function() { | |
return function(bytes, precision) { | |
if (isNaN(parseFloat(bytes)) || !isFinite(bytes)) return '-'; | |
if (typeof precision === 'undefined') precision = 1; | |
var units = ['bytes', 'kB', 'MB', 'GB', 'TB', 'PB'], | |
number = Math.floor(Math.log(bytes) / Math.log(1024)); | |
return (bytes / Math.pow(1024, Math.floor(number))).toFixed(precision) + ' ' + units[number]; | |
} | |
}); |
CULTURE SPEC.CULTURE ENGLISH NAME | |
-------------------------------------------------------------- | |
Invariant Language (Invariant Country) | |
af af-ZA Afrikaans | |
af-ZA af-ZA Afrikaans (South Africa) | |
ar ar-SA Arabic | |
ar-AE ar-AE Arabic (U.A.E.) | |
ar-BH ar-BH Arabic (Bahrain) | |
ar-DZ ar-DZ Arabic (Algeria) | |
ar-EG ar-EG Arabic (Egypt) |