Skip to content

Instantly share code, notes, and snippets.

View dshaw's full-sized avatar
🦄
Always bet on Node.js ✨

Dan Shaw dshaw

🦄
Always bet on Node.js ✨
View GitHub Profile
@dshaw
dshaw / screening.js
Created September 14, 2010 15:07 — forked from rmurphey/screening.js
// 1: how could you rewrite the following to make it shorter?
if (foo) {
bar.doSomething(el);
} else {
bar.doSomethingElse(el);
}
@dshaw
dshaw / factorial.js
Created September 5, 2010 04:06
recursive factorial function
function factorial( n ) {
if (n > 1) {
return factorial(n-1) * n;
} else {
return 1;
}
}
console.log( factorial( 1 ) 1 );
console.log( factorial( 3 ), 6 );
tests['backgroundsize'] = function() {
var bool = test_props_all( 'backgroundSize' );
if (bool){
bool = new Boolean(bool);
bool.contain = !!(function() {
set_css('background-size: contain');
return contains(m_style['backgroundSize'], 'contain');
});
bool.cover = !!(function() {
@dshaw
dshaw / gist:468335
Created July 8, 2010 17:30
Quick and dirty psuedo-ish code for a Node.js Web Socket connection throttler
var maxThrottles = 10;
connectionManager[connection.id].lastMessage = +new Date();
connectionManager[connection.id].timeOutUntil = connectionManager[connection.id].lastMessage + 1000; // one second, too long?
connectionManager[connection.id].throttledCount = 0;
connection.addListener("message", function( message ) {
var messageTime = +new Date();
if (messageTime < connectionManager[connection.id].timeOutUntil) {
(throttleCount < maxThrottles) ? connectionManager[connection.id].throttledCount++ : kickMe(connection.id);
}
// From @izs /via @janl
// http://twitter.com/izs/status/17744109574
// JavaScript one-liner to swap two variables:
foo = [bar, bar = foo][0];
@dshaw
dshaw / $.fn.serializeObject
Created June 22, 2010 20:46
$.fn.serializeObject()
// Flattens the Array produced by .serializeArray() into an Object
// with names as keys and values as their values.
(function($) {
$.fn.serializeObject = function() {
var formData = this.serializeArray(),
data = {};
for (var i=0, len=formData.length; i<len; i++) {
data[formData[i].name] = formData[i].value;
}
return data;
<!-- This is a Node+WebSocket powered demo to sync videos
across different browsers. This file is the client,
the other one is the Node server. Powered by Node and
http://github.com/miksago/node-websocket-server -->
<style>
.inactive { display: none; }
.active { display: block; }
</style>
<script>
@dshaw
dshaw / jquery.textchange.js
Created June 10, 2010 16:40 — forked from mkelly12/jquery.textchange.js
$.textchange plugin
(function ($) {
$.event.special.textchange = {
setup: function (data, namespaces) {
$(this).bind('keyup', $.event.special.textchange.handler);
$(this).bind('cut paste input', $.event.special.textchange.delayedHandler);
},
teardown: function (namespaces) {
// from @rem's Canvas collaborative drawing demo
// http://rem.im/collab-drawing.html
ctx.strokeStyle = '#' + (~~(Math.random() * 16777215)).toString(16);
var performance = (function () {
var my = {};
// Wrap a function body in this to return a copy that instruments itself
// If you want this to be useful, you should give your profiled function a name,
// otherwise it will be identified as "", which is less than useful.
my.profile = function (func) {
return function () {
var start = new Date().getTime(),
time,