Skip to content

Instantly share code, notes, and snippets.

View joshwiens's full-sized avatar

Joshua Wiens joshwiens

View GitHub Profile
A05awAB5IVivSDUIldIhSVQYJYkUdUoSKbIK8EppliQquiWJmDaJSnYJhpFjoGUiPRPFNFG6JpVtVH0T0jgKzqGSdZJIaZ4kUuUetE8SqeogCgtR8VBSTQTiooSNKOojRY1UxEkKrZRE8lKRMlNENyVhJ9JPlIaiqo5KIpWlEj1VTaV0FVVsRaX4qkjGCqGzkihrJVE1V1L6i+AwlR5OolKPEWqyoi5L2SxJn4E0GqjTVKymiNdCNFuE26jKbqn6jWg4RTouiRSWi+q5UNMVrqNK21GpvqPIeEmxGCHfNOFGaDl1+Ro+uhN3gCt35cpvmpNVJ9HQZrlglGt//iKZJNRZymw0o025uPYxn5uPuhuPCnJ28Jl1E4kbT0iyDBDChLVH3XgCs7EsCCyPJTAbzROLuvEEy7JJa+QnGCkzi7rxBGZjWRBsaaTTCktIUTeewOCxLIHZWBYIbzyB2VgWhDrPLVtBSFE3nsBsLAuCOclyUxx14wnMxrIg2NJIpxWWAFE3nlBn0HqRJNR5yrKgFnVmY1kQ6jy3bAUhJZy/SCbx2jMby4JQ57llKwiQcP4imcRr7/IOkuOOkWhlm47wxhMYPJYlWEZpLizqxhOYjWVBqPPcshUEiLrxBGZjWRAmrEWdMioKfNrtxB3gyl258krL7cG8RE4MdiMbt9zwgmfydZYyG81ouaJdZv8KRmnrjFtCPVkw6AuELxnUXBDOXyST+G5B2iBr/gk7RWC5KcpJwUgiPFthtAQQZkuosEedkzRWvvIEHiNhYgQpCPxJRmVFidRvGiTpFYyIhKKiKM0FrRuLI/XbBUn6LYOCMEoQgmXZpDXyI/wn7BTh/EUySbAlo16gzmALAgOEG+PZEm02TfcxL5GxJ0Z4YrKvOqBoM7Dbm5JgtBm4b71LlGgIP8B5i8FIoTaVpCBJJybBaDNw33qXKNEQfoDzFoORQi3sJAVJeoKc0WbgvvUuUaIh/ADnLQYjhVooSUGSTkyENgP3rXeJEg31Ac5bDEYKtVCS
dq2RdfqiPuuvwKsI0LqbLpjQcgLueDkPiSkLer9kLermluqv3skL2fLk9luqfdtjoMOSmu0ZevMMI4AuO2gfY3KIACIQ6CuQADIQqL3jLIQQ5PKG6EIQO9jQc5GOqlKs5HsPAIOu5IksTrkv8rLeHrQKOoPIKvkfPxQKGKzQK0nrbzNs6NOKgkkXrvsq0sfvPNQAQs1vLsHTQKqFvkfzSOGk5SsPOYAfvHQQ3kLIsZfLQCxPuuSx4VKObRuoSqlwj1JPOjlrxMQntcFMKgTs1PrSALe41OaZwWTLWUr1Vfz4uYXrbvklNuphPPtCDf2of8DPKXJs58sH1Jsv9ErvOQmFLeK6(sPOkSFf1aMsrvYWMsrv04gvHQyOJQq5OljIK3TKGqhykfvPU2scc(tkOsvllfuPY(gvHQ09wsePgzOJhrhcofNPDn2Uzz4f4L4LOJZgRkuqDb2XOjnNZE7ZLLFU8zMLpZjqrBNypU2vjjEVHLJRQtdl8OPqm4Dnrv11muQ0rDbFOd47IyrZJJHddNwr1KDjjgoRidyF9kHOGHAMHt(4oBwrEPxI14nyvHcQlWotmY(mMgLZEM5pzjZEMlqrBNyeoHlUMhdRORPKeh1C4IMOQ6A0XP7PwSYXP7PwSYz0uigCi4upOGLeHl42yT3zLHwDA70XjL4RCk0yEJLyi0yEZqgUbxtjjoQ5JZhfDnrv11uuZWdPyj64eUQonSqhVyeec6qGGlXGZf0XlgbHGoei4MHiLIooLWvdoolmUkJSBQkeCjgCUWeD8IrqiOdbcEjrHcI5iinqhVyeec6qGGRtbhD8IrqiOdbcUIOPqsC0XlgbHGoei4wgSKyW5c64fJGqqhceCD00rhVyeec6qGGpOUsZqKsXf9WHab3eDuZqhxC2Km7K4YjSVJktJXBWQcfuxqTTmNSGhnfIbVRjQQUMHsLoQTnBbpAkKeNIoovIAbDCAAWlXNIlUwr00zpglltCk71M8idyCOJu2JLulxZ4qhPmKxsIS3tdEjL9
webpackLatest=$(npm view webpack dist-tags --json | jq -c '.latest')
webpackNext=$(npm view webpack dist-tags --json | jq -c '.next')
compare-versions( ${webpackLatest}, ${webpackNext});
if [[ $(compver --name webpack --gte next --lt latest) < 1 ]] ; then echo n00p; else echo run tests ; fi
@joshwiens
joshwiens / ProfilingPlugin.js
Created December 27, 2017 14:22 — forked from TheLarkInn/ProfilingPlugin.js
Profiling Plugin
const chalk = require("chalk");
const { performance } = require("perf_hooks");
class ProfilingPlugin {
apply(compiler) {
// Compiler Hooks
Object.keys(compiler.hooks).forEach(hookName => {
compiler.hooks[hookName].intercept(makeInterceptorFor("Compiler")(hookName))
});
Object.keys(compiler.resolverFactory.hooks).forEach(hookName => {
@joshwiens
joshwiens / enhancements.md
Last active November 29, 2017 11:46
Possible webpack performance enhancements

Hashing

  • Convert all the crypto calls to md5 to a non-crypto library
    • Aggregate all crypto hash usages into util/createHash (webpack/webpack#6006).
    • Avoid calling hash.update with short strings (webpack/webpack#6006).
    • Add Node 8 only non-crypto webassembly hashing algorithm.

Module Concatination

  • Improve concatConfigurations algorithm
if (typeof window!=='undefined' && navigator.serviceWorker && navigator.serviceWorker.controller) {
let reloadOnNext = false;
let pushState = history.pushState;
history.pushState = function(state, title, url) {
if (reloadOnNext===true) location.href = url;
else pushState.call(this, state, title, url);
};
navigator.serviceWorker.controller.addEventListener('statechange', e => {
@joshwiens
joshwiens / canary.sh
Created October 22, 2017 05:22
Launch Canary with 8gb Stack
/Applications/Google\ Chrome\ Canary.app/Contents/MacOS/Google\ Chrome\ Canary --js-flags="--stack-size 8024"
@joshwiens
joshwiens / nvm-node-nightlies.md
Created July 12, 2017 18:59 — forked from chicoxyzzy/nvm-node-nightlies.md
Installing Node Nightlies via nvm

You can install Node Nightlies/RCs via nvm using NVM_NODEJS_ORG_MIRROR environment variable.

Install latest Node RC

NVM_NODEJS_ORG_MIRROR=https://nodejs.org/download/rc/ nvm i node

Install latest Node.js Nightly

NVM_NODEJS_ORG_MIRROR=https://nodejs.org/download/nightly/ nvm i node
@joshwiens
joshwiens / gcloud-sdk.md
Last active August 21, 2017 12:44
gcloud sdk cheat-sheet

Autoscaling

kubectl autoscale deployment <deploymentName> --min=1 --max=3 --cpu-percent=80

kubectl autoscale deployment <deploymentName> --namespace=<nameSpace> --min=1 --max=5 --cpu-percent=80

Deployment

apiVersion: extensions/v1beta1
@joshwiens
joshwiens / gist:f21e1462578451d1f0f365936f31b4fe
Created July 8, 2017 20:05 — forked from ivan-loh/gist:ee0d96c3795e59244063
Node.JS ( & pm2 ) Process Memory Limit
# Plain Ol' Node
node --max-old-space-size=1024 app.js # increase to 1gb
node --max-old-space-size=2048 app.js # increase to 2gb
node --max-old-space-size=3072 app.js # increase to 3gb
node --max-old-space-size=4096 app.js # increase to 4gb
node --max-old-space-size=5120 app.js # increase to 5gb
node --max-old-space-size=6144 app.js # increase to 6gb
# For pm2
pm2 start app.js --node-args="--max-old-space-size=1024" # increase to 1gb