(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 ~/.zshrc
path=('/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.offsetParent
Those 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!') | |
} |