Inspired by dannyfritz/commit-message-emoji
See also gitmoji.
| Commit type | Emoji |
|---|---|
| Initial commit | π :tada: |
| Version tag | π :bookmark: |
| New feature | β¨ :sparkles: |
| Bugfix | π :bug: |
| //wrap a fn that returns a function into a decorator | |
| function makeFnWrapDecorator(fnWrapper: Function) { | |
| return function decoratorWrapper(...args) { | |
| return function decorator(target, propertyKey: string, descriptor: PropertyDescriptor) { | |
| const fn = descriptor.value; | |
| let wrappedFn = fnWrapper.apply(null, [fn, ...args]); | |
| return { | |
| configurable: true, | |
| get() { | |
| return wrappedFn; |
| package main | |
| import ( | |
| "bufio" | |
| "fmt" | |
| "net" | |
| "net/http" | |
| "net/url" | |
| "crypto/tls" |
| package main | |
| import ( | |
| "context" | |
| "flag" | |
| "fmt" | |
| "io" | |
| "net" | |
| "net/http" | |
| "os" |
| package main | |
| import ( | |
| "fmt" | |
| "os" | |
| "text/template" | |
| ) | |
| type Person struct { | |
| Name string |
| function get(obj, path, def) { | |
| var fullPath = path | |
| .replace(/\[/g, '.') | |
| .replace(/]/g, '') | |
| .split('.') | |
| .filter(Boolean); | |
| return fullPath.every(everyFunc) ? obj : def; | |
| function everyFunc(step) { |
| <?php | |
| namespace App\ActiveRecord; | |
| class PostRepository | |
| { | |
| private $cache; | |
| public function __construct(Cache $cache) | |
| { | |
| // Any set() / get() cache implementation. |
| func main() { | |
| str := "abc foo:bar def baz:qux ghi" | |
| re := regexp.MustCompile("([a-z]+):([a-z]+)") | |
| result := ReplaceAllStringSubmatchFunc(re, str, func(groups []string) string { | |
| return groups[1] + "." + groups[2] | |
| }) | |
| fmt.Printf("'%s'\n", result) | |
| } |
Inspired by dannyfritz/commit-message-emoji
See also gitmoji.
| Commit type | Emoji |
|---|---|
| Initial commit | π :tada: |
| Version tag | π :bookmark: |
| New feature | β¨ :sparkles: |
| Bugfix | π :bug: |
| function logClass(target: any) { | |
| // save a reference to the original constructor | |
| var original = target; | |
| // a utility function to generate instances of a class | |
| function construct(constructor, args) { | |
| var c : any = function () { | |
| return constructor.apply(this, args); | |
| } |
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