(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.
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git$ nano ~/.zshrcpath=('/path/to/depot_tools' $path)| // polyfill for event.offsetX/offsetY | |
| // Firefox is the only browser that doesn't support it (IE has since 4) | |
| (function() { | |
| var evt = document.createEvent('MouseEvent'); | |
| if (evt.offsetX === void 0) { | |
| Object.defineProperties(MouseEvent.prototype, { | |
| 'offsetX': { | |
| get: function() { | |
| return this.layerX - this.target.offsetLeft; | |
| } |
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.offsetParentThose are my personal notes on AWS Solution Architect certification preparation. Hope you find them usefull.
To pass AWS certification, you should have:
Since Twitter doesn't have an edit button, it's a suitable host for JavaScript modules.
Source tweet: https://twitter.com/rauchg/status/712799807073419264
const leftPad = await requireFromTwitter('712799807073419264');Git default configuration is good but it can be personalized to improve your workflow efficiency.
Here are some good lines to put in your ~/.gitconfig:
# The basics, who you commit as:
[user]
name = John Doe
email = [email protected]| [ { | |
| "Date" : "2016-07-30", | |
| "Data" : { | |
| "Moves" : [ | |
| { "ID" : 13, "Key" : "Power", "Old Value" : 15, "New Value" : 25 }, | |
| { "ID" : 14, "Key" : "Power", "Old Value" : 70, "New Value" : 120 }, | |
| { "ID" : 18, "Key" : "Power", "Old Value" : 25, "New Value" : 30 }, | |
| { "ID" : 20, "Key" : "Power", "Old Value" : 15, "New Value" : 25 }, | |
| { "ID" : 21, "Key" : "Power", "Old Value" : 35, "New Value" : 40 }, | |
| { "ID" : 22, "Key" : "Power", "Old Value" : 55, "New Value" : 80 }, |
| var str = 'class ಠ_ಠ extends Array {constructor(j = "a", ...c) {const q = (({u: e}) => {return { [`s${c}`]: Symbol(j) };})({});super(j, q, ...c);}}' + | |
| 'new Promise((f) => {const a = function* (){return "\u{20BB7}".match(/./u)[0].length === 2 || true;};for (let vre of a()) {' + | |
| 'const [uw, as, he, re] = [new Set(), new WeakSet(), new Map(), new WeakMap()];break;}f(new Proxy({}, {get: (han, h) => h in han ? han[h] ' + | |
| ': "42".repeat(0o10)}));}).then(bi => new ಠ_ಠ(bi.rd));'; | |
| try { | |
| eval(str); | |
| } catch(e) { | |
| alert('Your browser does not support ES6!') | |
| } |