Skip to content

Instantly share code, notes, and snippets.

@donpark
donpark / s3.js
Created September 19, 2016 09:04
const Async = require('async')
const AWS = require('aws-sdk')
const UUID = require('node-uuid')
const config = require('./config')
class S3 {
constructor(options = {}) {
if (!options.accessKey) throw new Error('required S3 accessKey missing');
if (!options.secretKey) throw new Error('required S3 secretKey missing');
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