(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
(by @andrestaltz)
If you prefer to watch video tutorials with live-coding, then check out this series I recorded with the same contents as in this article: Egghead.io - Introduction to Reactive Programming.
A HTML/CSS Class Naming Convention for Scalable/Modular CSS.
| // takes a {} object and returns a FormData object | |
| var objectToFormData = function(obj, form, namespace) { | |
| var fd = form || new FormData(); | |
| var formKey; | |
| for(var property in obj) { | |
| if(obj.hasOwnProperty(property)) { | |
| if(namespace) { |
| /* bling.js */ | |
| window.$ = document.querySelector.bind(document); | |
| window.$$ = document.querySelectorAll.bind(document); | |
| Node.prototype.on = window.on = function(name, fn) { this.addEventListener(name, fn); }; | |
| NodeList.prototype.__proto__ = Array.prototype; | |
| NodeList.prototype.on = function(name, fn) { this.forEach((elem) => elem.on(name, fn)); }; |
| // set svg d path used as fallback (star) | |
| $svg-d-path: 'm25,1l6,17l18,0l-14,11l5,17l-15,-10l-15,10l5,-17l-14,-11l18,0l6,-17z' !default; | |
| // functions to urlencode the svg string | |
| @function str-replace($string, $search, $replace: '') { | |
| $index: str-index($string, $search); | |
| @if $index { | |
| @return str-slice($string, 1, $index - 1) + $replace + str-replace(str-slice($string, $index + str-length($search)), $search, $replace); | |
| } | |
| @return $string; |
All of the below properties or methods, when requested/called in JavaScript, will trigger the browser to synchronously calculate the style and layout*. This is also called reflow or layout thrashing, and is common performance bottleneck.
Generally, all APIs that synchronously provide layout metrics will trigger forced reflow / layout. Read on for additional cases and details.
elem.offsetLeft, elem.offsetTop, elem.offsetWidth, elem.offsetHeight, elem.offsetParent| /* | |
| * DESCRIPTION | |
| * This script will go through all the subscription buttons on the YouTube page you execute it on, and subscribes to the ones that | |
| * you're not subscribed to yet. | |
| * A random delay is added to each subscription request, this is due to the fact that YouTube starts blocking subscriptions after | |
| * a certain number of consecutive requests. Randomising the delays should trick the detection into thinking it's a valid user doing | |
| * the requests. | |
| * | |
| * HOW TO USE | |
| * Navigate to the page containing the channels you would like to subscribe to. (The subscribe button should be visible!) |
| /* | |
| Author: ZetCoby | |
| http://stackoverflow.com/a/30376660/3708754 | |
| */ | |
| var tools = { | |
| /** | |
| * | |
| * Used to get the length of a rect | |
| * |
| { | |
| "name": "npm-scripts-example", | |
| "version": "1.0.0", | |
| "description": "npm scripts example", | |
| "scripts": { | |
| "prebuild": "echo I run before the build script", | |
| "build": "cross-env NODE_ENV=production webpack", | |
| "postbuild": "echo I run after the build script" | |
| } | |
| } |