IMPORTANT: Backup your nginx site configs (usually under /etc/nginx/sites-available
)!
Remove old nginx incl. nginx-common:
apt-get autoremove --purge nginx nginx-common
type RecursiveRequired<T> = Required<{ | |
[P in keyof T]: T[P] extends object | undefined ? RecursiveRequired<Required<T[P]>> : T[P]; | |
}>; | |
type ExampleType = { | |
a?: number; | |
b: number; | |
c?: { | |
d?: { | |
e?: number; |
/** private type, not exported */ | |
declare type NonObject = undefined | null | boolean | string | number | Function; | |
/** | |
* This type allows you to mark an object with | |
* optional properties as required. | |
*/ | |
export declare type Complete<T> = { | |
[K in keyof T]-?: T[K]; | |
} | |
/** |
/** | |
* @author Boggddan <github.com/boggddan> | |
* Запускается в браузерах которые не поддерживают свойство background-blend-mode. | |
* Полифил применяется к тегам помеченым атрибутом `data-background-blend-mode` в свойтвах которого нужно передать режим смешивания. | |
* Поддерживается: normal, multiply, lighten, screen, darken. (протестировано в IE 11) | |
* @example: <div data-background-blend-mode="multiply"></div> | |
*/ | |
/* Element.prepend polyfill for IE 11 */ | |
function prependPolyfill() { |
const delay = (time) => { | |
return new Promise(resolve => setTimeout(resolve, time)); | |
}; | |
const serviceFactory = (timeout) => { | |
return async () => { | |
await delay(timeout); | |
return timeout; | |
}; | |
}; |
# the path where screenshots to save | |
SS_PATH="/tmp" | |
# if you want to save them to your desktop, SS_PATH should be "/Users/YOURNAME/Desktop" | |
# a variable of unix timestamp for screenshot file name | |
NOW=$(date +%s) | |
# execute screen capture command, screenshot$NOW.png is the name of file | |
screencapture -i -r $SS_PATH/screenshot$NOW@2X.png | |
// please comment if you know of other BOOKS (not considering blogs just yet) on ES6 that are out or coming out
co@3:
1 middleware
9457.52
5 middleware
9360.21