I was trying to understand JavaScript Promises by using various libraries (bluebird, when, Q) and other async approaches.
I read the spec, some blog posts, and looked through some code. I learned how to
| On iTerm2 - Open Preferences > Profiles > Keys > Key Mappings > Presets > Select Natural Text Editing | |
| - You can move a word backwards using Option ⌥ + ← and a word forwards using Option ⌥ + → | |
| - Move to the start of the line using fn + ← and to the end of the line with fn + →. | |
| - Also you can delete a word backwards using Option ⌥ + ⌫, delete the whole line using Command ⌘ + ⌫. | |
| If the preset doesn't appear, reinstall iTerm2. If you installed it using Homebrew + Cask: | |
| brew cask reinstall iterm2 |
| if (typeof window!=='undefined' && navigator.serviceWorker && navigator.serviceWorker.controller) { | |
| let reloadOnNext = false; | |
| let pushState = history.pushState; | |
| history.pushState = function(state, title, url) { | |
| pushState.call(this, state, title, url); | |
| if (reloadOnNext===true) location.reload(true); | |
| }; | |
| navigator.serviceWorker.controller.addEventListener('statechange', e => { |
| import { h, Component } from 'preact'; | |
| import { Router } from 'preact-router'; | |
| import Header from './header'; | |
| import Home from '../routes/home'; | |
| import Profile from '../routes/profile'; | |
| import NotifyChange from "./NotifyChange/index"; | |
| // import Home from 'async!../routes/home'; | |
| // import Profile from 'async!../routes/profile'; |
| const path = require('path'); | |
| const webpack = require('webpack'); | |
| const NameAllModulesPlugin = require('name-all-modules-plugin'); | |
| module.exports = { | |
| entry: { | |
| main: './src/foo', | |
| other: './src/foo-two', | |
| vendor: ['preact'] | |
| }, |
| var Shopify = Shopify || {}; | |
| // --------------------------------------------------------------------------- | |
| // Money format handler | |
| // --------------------------------------------------------------------------- | |
| Shopify.money_format = "${{amount}}"; | |
| Shopify.formatMoney = function(cents, format) { | |
| if (typeof cents == 'string') { cents = cents.replace('.',''); } | |
| var value = ''; | |
| var placeholderRegex = /\{\{\s*(\w+)\s*\}\}/; | |
| var formatString = (format || this.money_format); |
I was trying to understand JavaScript Promises by using various libraries (bluebird, when, Q) and other async approaches.
I read the spec, some blog posts, and looked through some code. I learned how to
| // `Object.make(..)` is a helper/wrapper for `Object.create(..)`. Both create a new | |
| // object, and optionally link that new object's `[[Prototype]]` chain to another object. | |
| // | |
| // But `Object.make(..)` makes sure the new object always has a `__proto__` property | |
| // (even a null one) and delegation to a `isPrototypeOf(..)` method, both of which are | |
| // missing from the bare object (aka "Dictionary") created by `Object.create(null)`. | |
| // | |
| // `isPrototypeOf()` is put on a extra object that your created object can delegate to, | |
| // if any only if you create an empty object (by not passing a `linkTo`) that otherwise | |
| // wouldn't have access to `isPrototypeOf()`. |
| gifify() { | |
| if [[ -n "$1" ]]; then | |
| if [[ $2 == '--good' ]]; then | |
| ffmpeg -i $1 -r 10 -vcodec png out-static-%05d.png | |
| time convert -verbose +dither -layers Optimize -resize 600x600\> out-static*.png GIF:- | gifsicle --colors 128 --delay=5 --loop --optimize=3 --multifile - > $1.gif | |
| rm out-static*.png | |
| else | |
| ffmpeg -i $1 -s 600x400 -pix_fmt rgb24 -r 10 -f gif - | gifsicle --optimize=3 --delay=3 > $1.gif | |
| fi | |
| else |
Sometimes you want to have a subdirectory on the master branch be the root directory of a repository’s gh-pages branch. This is useful for things like sites developed with Yeoman, or if you have a Jekyll site contained in the master branch alongside the rest of your code.
For the sake of this example, let’s pretend the subfolder containing your site is named dist.
Remove the dist directory from the project’s .gitignore file (it’s ignored by default by Yeoman).