I hereby claim:
- I am neener54 on github.
- I am neener54 (https://keybase.io/neener54) on keybase.
- I have a public key ASDNYOu-xFqNTgqPV_yr_zaB2rcuS-tXKelRt2tHqKGLxwo
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
What every developer should know about rendering 101 - High level but clear. This is a baseline for what we should keep in mind to avoid jankiness.
HTML5rocks - Tutorial on how various browsers handle rendering. Includes discussions of the parsing and lexing as well as the internals of various browser implementations.
In Depth Slideshow - Great in-depth slideshow that covers more than just rendering. Very thorough.
Google Developers - This covers just the rendering portion. This explains performance related issues with it.
Slideshare deck - Manish Trivedi did a nice high level look at things.
| # .railsrc | |
| -B #Skip Bundle | |
| -T #Skip Test-Unit | |
| -d postgresql #Use postgres |
| # Postgresql fancy datatypes! | |
| * array | |
| * hstore (=~ hash) | |
| * json | |
| * jsonb | |
| Philippe Creux - [@pcreux](http://twitter.com/pcreux) |
| class NullObject | |
| # You can instantiate a new NullObject with arbitrary methods by calling | |
| # NullObject.new({method1: "outcome1"}) | |
| # That will apply the method to the object | |
| def initialize(methods={}) | |
| methods.each_pair do |k,v| | |
| define_singleton_method k do |*params| | |
| v | |
| end | |
| end |
| (function() { | |
| var arrays, basicObjects, deepClone, deepExtend, deepExtendCouple, isBasicObject, | |
| __slice = [].slice; | |
| deepClone = function(obj) { | |
| var func, isArr; | |
| if (!_.isObject(obj || _.isFunction(obj))) { | |
| return obj; | |
| } | |
| if (_.isDate(obj)) { |
| rivets.configure({ | |
| adapter: { | |
| subscribe: function(obj, keypath, callback) { | |
| obj.on('change:' + keypath, callback) | |
| }, | |
| unsubscribe: function(obj, keypath, callback) { | |
| obj.off('change:' + keypath, callback) | |
| }, | |
| read: function(obj, keypath) { | |
| return obj.get(keypath) |
| $.scrollWindowTo = function(pos, duration, cb) { | |
| if (duration == null) { | |
| duration = 0; | |
| } | |
| if (pos === $(window).scrollTop()) { | |
| $(window).trigger('scroll'); | |
| if (typeof cb === "function") { | |
| cb(); | |
| } | |
| return; |
| <!DOCTYPE HTML> | |
| <!-- | |
| Prologue 1.2 by HTML5 UP | |
| html5up.net | @n33co | |
| Free for personal and commercial use under the CCA 3.0 license (html5up.net/license) | |
| --> | |
| <html> | |
| <head> | |
| <title>Prologue by HTML5 UP</title> | |
| <meta http-equiv="content-type" content="text/html; charset=utf-8" /> |
| var listSubSelector = function(){ | |
| "use strict"; | |
| $('body').on('click','li input', function(){ | |
| var $this = $(this); | |
| if ($this.attr('checked')){ | |
| $this.parentsUntil('ul').find('input[type="checkbox"]').attr('checked',true); | |
| }else{ | |
| $this.parentsUntil('li').find('input[type="checkbox"]').attr('checked',false); | |
| $this.parents('.description').find('input[type="checkbox"]:first').attr('checked',false); |