Skip to content

Instantly share code, notes, and snippets.

export function listenOnce(target, type, listener, options) {
let once = (e) => {
target.removeEventListener(type, once, options)
listener(e)
}
target.addEventListener(type, once, options)
}
export function listenAnyOnce(target, types, listener, options) {
let once = (e) => {
@donpark
donpark / bindEventListeners.js
Last active August 25, 2016 08:33
bind all onXXX methods of an object
export function bindMethods(obj, filter) {
if (obj) {
for (let name of Object.getOwnPropertyNames(Object.getPrototypeOf(obj))) {
let value = obj[name]
if (typeof value === 'function' && filter(name, value)) {
obj[name] = value.bind(obj)
}
}
}
}
@donpark
donpark / ed25519-full.json
Created July 18, 2016 08:04
jwt-tweetnacl
{"kty":"OKP","crv":"Ed25519","d":"nWGxne_9WmC6hEr0kuwsxERJxWl7MmkZcDusAxyuf2A","x":"11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo"}
@donpark
donpark / react-lifecycle.md
Last active May 3, 2016 23:45
React.js Component Lifecycle

Invokation sequence of React.js Component Lifecycle Methods under four distinct conditions:

initial render

  • componentWillMount
  • render
  • componentDidMount

props change

Keybase proof

I hereby claim:

  • I am donpark on github.
  • I am superdon (https://keybase.io/superdon) on keybase.
  • I have a public key whose fingerprint is 065A 30C2 A391 5D3F F49C 00D1 DF40 87B3 6702 6798

To claim this, I am signing this object:

@donpark
donpark / hdom.coffee
Last active December 8, 2015 02:16
like virtual-dom except works with real elements
util = require('./util')
applyStyle = (elem, style) ->
if typeof style is 'string'
elem.setAttribute('style', style)
else
elem.style[key] = val for own key, val of style
return
@donpark
donpark / lazy.go
Created July 25, 2015 00:49
Abstract lazy connection with optional auto disconnect on idle timeout
package lazy
import (
"sync"
"time"
)
type Connection struct {
sync.Mutex
conn interface{}
@donpark
donpark / gist:7549a1a2a5f7eef7fbea
Created January 11, 2015 06:53
CALayer with resizable image
- (CALayer*)layerFromResiableImage:(UIImage*)image {
CGSize size = [image size];
UIEdgeInsets insets = [image capInsets];
CALayer *layer = [CALayer layer];
[layer setContents:(id)[image CGImage]];
layer.contentsCenter = CGRectMake(insets.left / size.width, insets.top / size.height,
1.0/size.width, 1.0 / size.height);
return layer;
}
@donpark
donpark / EventEmitter.coffee
Created January 22, 2014 17:49
Generic implementation of EventEmitter for browser in CoffeeScript
class EventEmitter
on: (name, listener) ->
listeners = (@_eventListeners ?= {})[name] ?= []
listeners.push listener
off: (name, listener) ->
if listeners = @_eventListeners?[name]
index = listeners.indexOf listener
listeners[index] = null if index >= 0
[localhost] local: npm outdated -g
grunt-cli /Users/don/.nvm/v0.10.21/lib/node_modules/grunt-cli current=0.1.9 wanted=0.1.10 latest=0.1.10
nodeunit /Users/don/.nvm/v0.10.21/lib/node_modules/nodeunit current=0.8.1 wanted=0.8.2 latest=0.8.2
stylus /Users/don/.nvm/v0.10.21/lib/node_modules/stylus current=0.39.4 wanted=0.40.0 latest=0.40.0
generator-webapp /Users/don/.nvm/v0.10.21/lib/node_modules/generator-webapp current=0.4.3 wanted=0.4.4 latest=0.4.4
uglify-js /Users/don/.nvm/v0.10.21/lib/node_modules/uglify-js current=2.4.2 wanted=2.4.3 latest=2.4.3
yeoman-generator /Users/don/.nvm/v0.10.21/lib/node_modules/generator-mocha/node_modules/yeoman-generator current=0.10.5 wanted=0.10.5 latest=0.14.0-rc.1
commander /Users/don/.nvm/v0.10.21/lib/node_modules/dox/node_modules/commander current=0.6.1 wanted=0.6.1 latest=2.0.0
stylus /Users/don/.nvm/v0.10.21/lib/node_modules/serve/node_modules/stylus current=0.39.4 wanted=0.40.0 latest=0.40.0
commander /Users/don/.nvm/v0.10.21/lib/node_modules/serve/node_modules/command