Skip to content

Instantly share code, notes, and snippets.

@justinobney
justinobney / tic_tac_toe.js
Last active August 29, 2015 14:16
Simple tic tac toe logic
var winningBoards = [
genWinningColBoard(0),
genWinningColBoard(1),
genWinningColBoard(2),
genWinningRowBoard(0),
genWinningRowBoard(1),
genWinningRowBoard(2),
getDiagonalBoard(3),
getDiagonalBoard(3, true)
];
@justinobney
justinobney / qs.js
Created March 9, 2015 14:17
get querystring params
function gup(name, url, defaultValue) {
if (!url) url = location.href;
name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
var regexS = "[\\?&]" + name + "=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(url);
return (results == null ? null : results[1]) || defaultValue;
}
var id = gup('id', document.location.toString(), '50');
function pick(collection, properties){
[].map.call(collection, function(val, key){
var result = {};
properties.forEach(copyProperty);
return result;
function copyProperty(propName){ result[propName] = val[propName]; }
})
}
$provide.decorator('$exceptionHandler', [
'$delegate', '$window', '$log', '$stateParams',
function($delegate, $window, $log, $stateParams) {
return function(exception, cause) {
if ($window.trackJs) {
$log.debug('$exceptionHandler ::: $stateParams => ', angular.toJson($stateParams));
$window.trackJs.track(exception);
}
$delegate(exception, cause);
};
JSON.stringify((function(){
return Object.keys(window).filter(function(key) {
try {
var versionInfo = getVersionInfo(key)
return versionInfo.version
} catch (e) {
return false
}
}).map(getVersionInfo)
var Game = {
init: init,
draw: draw
}
function init(name){
this.name = name;
}
function draw() {
@justinobney
justinobney / Rx_throttledPromiseObserver.js
Last active August 29, 2015 14:13
Create an observable that accepts a list of callbacks(returning promises) to execute keeping only an optional number in flight at one time
function throttledPromiseObserver(callbacks, maxPending, checkInterval) {
var remainingCalls = callbacks.length;
var pendingCalls = 0;
var callIdx = 0;
var _checkInterval = checkInterval || 100;
var _maxPending = maxPending || 0;
return Rx.Observable.create(bufferedPromiseCalls);
function bufferedPromiseCalls(observer) {
@justinobney
justinobney / hn_whose-hiring.js
Last active August 10, 2016 13:43
Hacker News - Who is hiring trends
var clientSide = [
'javascript',
'elm',
'ember',
'angular',
'jquery',
'backbone',
'react',
'reactjs',
'clojurescript',
var data = [{
id: 1,
children: [{
id: 2,
children: [{
id: 3,
children: [{
id: 4,
children: []
}]
var cache = {};
function checkCache(key){
if(cache[key]){
return cache[key];
} else {
// do some long/expensive action
// ex: calculation, ajax, etc...
cache[key] = Math.random();
return cache[key];
}