From 26d6be877cc2714ba18acea5298c1c442a9cf9a0 Mon Sep 17 00:00:00 2001 From: Kyle Martin Date: Mon, 4 Feb 2019 18:31:47 +1300 Subject: [PATCH 01/13] Jan 2019 maintenance --- README.chinese.md | 5 +++-- README.korean.md | 5 +++-- README.md | 5 +++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/README.chinese.md b/README.chinese.md index cb9f0147..a17ab626 100644 --- a/README.chinese.md +++ b/README.chinese.md @@ -9,7 +9,7 @@
- 79 items Last update: January 1st, 2019 Updated for Node 10.15.0 LTS + 79 items Last update: February 1st, 2019 Updated for Node 10.15.1 LTS

@@ -1037,6 +1037,7 @@ This repository is being kept up to date thanks to the help from the community. ⭐ [Kyle Martin](https://github.com/js-kyle), ⭐ [Keith Holliday](https://github.com/TheHollidayInn), -⭐ [Corey Cleary](https://github.com/coreyc) +⭐ [Corey Cleary](https://github.com/coreyc), +⭐ [Maximilian Berkmann](https://github.com/Berkmann18)

diff --git a/README.korean.md b/README.korean.md index fa2d1b9a..0cadfb5b 100644 --- a/README.korean.md +++ b/README.korean.md @@ -9,7 +9,7 @@
- 79 items Last update: January 1st, 2019 Updated for Node 10.15.0 LTS + 79 items Last update: February 1st, 2019 Updated for Node 10.15.1 LTS

@@ -760,6 +760,7 @@ This repository is being kept up to date thanks to the help from the community. ⭐ [Kyle Martin](https://github.com/js-kyle), ⭐ [Keith Holliday](https://github.com/TheHollidayInn), -⭐ [Corey Cleary](https://github.com/coreyc) +⭐ [Corey Cleary](https://github.com/coreyc), +⭐ [Maximilian Berkmann](https://github.com/Berkmann18)


diff --git a/README.md b/README.md index a68e4af5..e5f8cee0 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@
- 79 items Last update: January 1st, 2019 Updated for Node 10.15.0 LTS + 79 items Last update: February 1st, 2019 Updated for Node 10.15.1 LTS

@@ -1096,6 +1096,7 @@ This repository is being kept up to date thanks to the help from the community. ⭐ [Kyle Martin](https://github.com/js-kyle), ⭐ [Keith Holliday](https://github.com/TheHollidayInn), -⭐ [Corey Cleary](https://github.com/coreyc) +⭐ [Corey Cleary](https://github.com/coreyc), +⭐ [Maximilian Berkmann](https://github.com/Berkmann18)


From 545ae028cd61a47944f0a9edb931f222319bd841 Mon Sep 17 00:00:00 2001 From: el-ethan Date: Sat, 9 Feb 2019 10:08:04 -0600 Subject: [PATCH 02/13] Fix some typos and grammar errors, add a few links --- README.md | 88 +++++++++++++++++++++++++++---------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index e5f8cee0..d93fe2cb 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ Read in a different language: [![CN](/assets/flags/CN.png)**CN**](/README.chines ## ![✔] 2.2 Use only the built-in Error object -**TL;DR:** Many throws errors as a string or as some custom type – this complicates the error handling logic and the interoperability between modules. Whether you reject a promise, throw an exception or an emit error – using only the built-in Error object will increase uniformity and prevent loss of information +**TL;DR:** Many throw errors as a string or as some custom type – this complicates the error handling logic and the interoperability between modules. Whether you reject a promise, throw an exception or emit an error – using only the built-in Error object will increase uniformity and prevent loss of information **Otherwise:** When invoking some component, being uncertain which type of errors come in return – it makes proper error handling much harder. Even worse, using custom types to describe errors might lead to loss of critical error information like the stack trace! @@ -144,7 +144,7 @@ Read in a different language: [![CN](/assets/flags/CN.png)**CN**](/README.chines **TL;DR:** Let your API callers know which errors might come in return so they can handle these thoughtfully without crashing. This is usually done with REST API documentation frameworks like Swagger -**Otherwise:** An API client might decide to crash and restart only because he received back an error he couldn’t understand. Note: the caller of your API might be you (very typical in a microservice environment) +**Otherwise:** An API client might decide to crash and restart only because it received back an error it couldn’t understand. Note: the caller of your API might be you (very typical in a microservice environment) 🔗 [**Read More: documenting errors in Swagger**](/sections/errorhandling/documentingusingswagger.md) @@ -152,9 +152,9 @@ Read in a different language: [![CN](/assets/flags/CN.png)**CN**](/README.chines ## ![✔] 2.6 Exit the process gracefully when a stranger comes to town -**TL;DR:** When an unknown error occurs (a developer error, see best practice 2.3) - there is uncertainty about the application healthiness. A common practice suggests restarting the process carefully using a process management tool like Forever or PM2 +**TL;DR:** When an unknown error occurs (a developer error, see best practice 2.3) - there is uncertainty about the application healthiness. A common practice suggests restarting the process carefully using a process management tool like [Forever](https://www.npmjs.com/package/forever) or [PM2](http://pm2.keymetrics.io/) -**Otherwise:** When an unfamiliar exception occurs, some object might be in a faulty state (e.g an event emitter which is used globally and not firing events anymore due to some internal failure) and all future requests might fail or behave crazily +**Otherwise:** When an unfamiliar exception occurs, some object might be in a faulty state (e.g. an event emitter which is used globally and not firing events anymore due to some internal failure) and all future requests might fail or behave crazily 🔗 [**Read More: shutting the process**](/sections/errorhandling/shuttingtheprocess.md) @@ -162,7 +162,7 @@ Read in a different language: [![CN](/assets/flags/CN.png)**CN**](/README.chines ## ![✔] 2.7 Use a mature logger to increase error visibility -**TL;DR:** A set of mature logging tools like Winston, Bunyan or Log4J, will speed-up error discovery and understanding. So forget about console.log +**TL;DR:** A set of mature logging tools like [Winston](https://www.npmjs.com/package/winston), [Bunyan](https://github.com/trentm/node-bunyan) or [Log4js](http://stritti.github.io/log4js/), will speed-up error discovery and understanding. So forget about console.log **Otherwise:** Skimming through console.logs or manually through messy text file without querying tools or a decent log viewer might keep you busy at work until late @@ -172,9 +172,9 @@ Read in a different language: [![CN](/assets/flags/CN.png)**CN**](/README.chines ## ![✔] 2.8 Test error flows using your favorite test framework -**TL;DR:** Whether professional automated QA or plain manual developer testing – Ensure that your code not only satisfies positive scenario but also handle and return the right errors. Testing frameworks like Mocha & Chai can handle this easily (see code examples within the "Gist popup") +**TL;DR:** Whether professional automated QA or plain manual developer testing – Ensure that your code not only satisfies positive scenarios but also handles and returns the right errors. Testing frameworks like Mocha & Chai can handle this easily (see code examples within the "Gist popup") -**Otherwise:** Without testing, whether automatically or manually, you can’t rely on our code to return the right errors. Without meaningful errors – there’s no error handling +**Otherwise:** Without testing, whether automatically or manually, you can’t rely on your code to return the right errors. Without meaningful errors – there’s no error handling 🔗 [**Read More: testing error flows**](/sections/errorhandling/testingerrorflows.md) @@ -192,7 +192,7 @@ Read in a different language: [![CN](/assets/flags/CN.png)**CN**](/README.chines ## ![✔] 2.10 Catch unhandled promise rejections -**TL;DR:** Any exception thrown within a promise will get swallowed and discarded unless a developer didn’t forget to explicitly handle. Even if your code is subscribed to process.uncaughtException! Overcome this by registering to the event process.unhandledRejection +**TL;DR:** Any exception thrown within a promise will get swallowed and discarded unless a developer didn’t forget to explicitly handle. Even if your code is subscribed to `process.uncaughtException`! Overcome this by registering to the event `process.unhandledRejection` **Otherwise:** Your errors will get swallowed and leave no trace. Nothing to worry about @@ -218,7 +218,7 @@ Read in a different language: [![CN](/assets/flags/CN.png)**CN**](/README.chines **TL;DR:** [ESLint](https://eslint.org) is the de-facto standard for checking possible code errors and fixing code style, not only to identify nitty-gritty spacing issues but also to detect serious code anti-patterns like developers throwing errors without classification. Though ESLint can automatically fix code styles, other tools like [prettier](https://www.npmjs.com/package/prettier) and [beautify](https://www.npmjs.com/package/js-beautify) are more powerful in formatting the fix and work in conjunction with ESLint -**Otherwise:** Developers will focus on tedious spacing and line-width concerns and time might be wasted overthinking about the project's code style +**Otherwise:** Developers will focus on tedious spacing and line-width concerns and time might be wasted overthinking the project's code style

@@ -313,7 +313,7 @@ function doSomething() {} ## ![✔] 3.7 Prefer const over let. Ditch the var -**TL;DR:** Using `const` means that once a variable is assigned, it cannot be reassigned. Preferring const will help you to not be tempted to use the same variable for different uses, and make your code clearer. If a variable needs to be reassigned, in a for loop, for example, use `let` to declare it. Another important aspect of `let` is that a variable declared using it is only available in the block scope in which it was defined. `var` is function scoped, not block scoped, and [shouldn't be used in ES6](https://hackernoon.com/why-you-shouldnt-use-var-anymore-f109a58b9b70) now that you have const and let at your disposal +**TL;DR:** Using `const` means that once a variable is assigned, it cannot be reassigned. Preferring `const` will help you to not be tempted to use the same variable for different uses, and make your code clearer. If a variable needs to be reassigned, in a for loop, for example, use `let` to declare it. Another important aspect of `let` is that a variable declared using it is only available in the block scope in which it was defined. `var` is function scoped, not block scoped, and [shouldn't be used in ES6](https://hackernoon.com/why-you-shouldnt-use-var-anymore-f109a58b9b70) now that you have `const` and `let` at your disposal **Otherwise:** Debugging becomes way more cumbersome when following a variable that frequently changes @@ -383,7 +383,7 @@ All statements above will return false if used with `===` **TL;DR:** Node 8 LTS now has full support for Async-await. This is a new way of dealing with asynchronous code which supersedes callbacks and promises. Async-await is non-blocking, and it makes asynchronous code look synchronous. The best gift you can give to your code is using async-await which provides a much more compact and familiar code syntax like try-catch -**Otherwise:** Handling async errors in callback style is probably the fastest way to hell - this style forces to check errors all over, deal with awkward code nesting and make it difficult to reason about the code flow +**Otherwise:** Handling async errors in callback style is probably the fastest way to hell - this style forces to check errors all over, deal with awkward code nesting and makes it difficult to reason about the code flow 🔗[**Read more:** Guide to async await 1.0](https://github.com/yortus/asyncawait) @@ -391,7 +391,7 @@ All statements above will return false if used with `===` ## ![✔] 3.12 Use arrow function expressions (=>) -**TL;DR:** Though it's recommended to use async-await and avoid function parameters when dealing with older API that accept promises or callbacks - arrow functions make the code structure more compact and keep the lexical context of the root function (i.e. 'this') +**TL;DR:** Though it's recommended to use async-await and avoid function parameters when dealing with older APIs that accept promises or callbacks - arrow functions make the code structure more compact and keep the lexical context of the root function (i.e. `this`) **Otherwise:** Longer code (in ES5 functions) is more prone to bugs and cumbersome to read @@ -405,7 +405,7 @@ All statements above will return false if used with `===` ## ![✔] 4.1 At the very least, write API (component) testing -**TL;DR:** Most projects just don't have any automated testing due to short timetables or often the 'testing project' run out of control and being abandoned. For that reason, prioritize and start with API testing which is the easiest to write and provide more coverage than unit testing (you may even craft API tests without code using tools like [Postman](https://www.getpostman.com/). Afterward, should you have more resources and time, continue with advanced test types like unit testing, DB testing, performance testing, etc +**TL;DR:** Most projects just don't have any automated testing due to short timetables or often the 'testing project' run out of control and being abandoned. For that reason, prioritize and start with API testing which is the easiest to write and provides more coverage than unit testing (you may even craft API tests without code using tools like [Postman](https://www.getpostman.com/). Afterward, should you have more resources and time, continue with advanced test types like unit testing, DB testing, performance testing, etc **Otherwise:** You may spend long days on writing unit tests to find out that you got only 20% system coverage @@ -421,7 +421,7 @@ All statements above will return false if used with `===` ## ![✔] 4.3 Carefully choose your CI platform (Jenkins vs CircleCI vs Travis vs Rest of the world) -**TL;DR:** Your continuous integration platform (CICD) will host all the quality tools (e.g test, lint) so it should come with a vibrant ecosystem of plugins. [Jenkins](https://jenkins.io/) used to be the default for many projects as it has the biggest community along with a very powerful platform at the price of complex setup that demands a steep learning curve. Nowadays, it became much easier to set up a CI solution using SaaS tools like [CircleCI](https://circleci.com) and others. These tools allow crafting a flexible CI pipeline without the burden of managing the whole infrastructure. Eventually, it's a trade-off between robustness and speed - choose your side carefully +**TL;DR:** Your continuous integration platform (CICD) will host all the quality tools (e.g test, lint) so it should come with a vibrant ecosystem of plugins. [Jenkins](https://jenkins.io/) used to be the default for many projects as it has the biggest community along with a very powerful platform at the price of complex setup that demands a steep learning curve. Nowadays, it has become much easier to set up a CI solution using SaaS tools like [CircleCI](https://circleci.com) and others. These tools allow crafting a flexible CI pipeline without the burden of managing the whole infrastructure. Eventually, it's a trade-off between robustness and speed - choose your side carefully **Otherwise:** Choosing some niche vendor might get you blocked once you need some advanced customization. On the other hand, going with Jenkins might burn precious time on infrastructure setup @@ -465,15 +465,15 @@ All statements above will return false if used with `===` **TL;DR:** End to end (e2e) testing which includes live data used to be the weakest link of the CI process as it depends on multiple heavy services like DB. Docker-compose turns this problem into a breeze by crafting production-like environment using a simple text file and easy commands. It allows crafting all the dependent services, DB and isolated network for e2e testing. Last but not least, it can keep a stateless environment that is invoked before each test suite and dies right after -**Otherwise:** Without docker-compose teams must maintain a testing DB for each testing environment including developers machines, keep all those DBs in sync so test results won't vary across environments +**Otherwise:** Without docker-compose teams must maintain a testing DB for each testing environment including developers' machines, keep all those DBs in sync so test results won't vary across environments

## ![✔] 4.9 Refactor regularly using static analysis tools -**TL;DR:** Using static analysis tools helps by giving objective ways to improve code quality and keep your code maintainable. You can add static analysis tools to your CI build to fail when it finds code smells. Its main selling points over plain linting are the ability to inspect quality in the context of multiple files (e.g. detect duplications), perform advanced analysis (e.g. code complexity) and follow the history and progress of code issues. Two examples of tools you can use are [Sonarqube](https://www.sonarqube.org/) (2,600+ [stars](https://github.com/SonarSource/sonarqube)) and [Code Climate](https://codeclimate.com/) (1,500+ [stars](https://github.com/codeclimate/codeclimate)). +**TL;DR:** Using static analysis tools helps by giving objective ways to improve code quality and keeps your code maintainable. You can add static analysis tools to your CI build to fail when it finds code smells. Its main selling points over plain linting are the ability to inspect quality in the context of multiple files (e.g. detect duplications), perform advanced analysis (e.g. code complexity) and follow the history and progress of code issues. Two examples of tools you can use are [Sonarqube](https://www.sonarqube.org/) (2,600+ [stars](https://github.com/SonarSource/sonarqube)) and [Code Climate](https://codeclimate.com/) (1,500+ [stars](https://github.com/codeclimate/codeclimate)). -**Otherwise:** With poor code quality, bugs and performance will always be an issue that no shiny new library or state of the art features can fix. +**Otherwise:** With poor code quality, bugs and performance will always be an issue that no shiny new library or state of the art features can fix 🔗 [**Read More: Refactoring!**](/sections/testingandquality/refactoring.md) @@ -497,7 +497,7 @@ All statements above will return false if used with `===` **TL;DR:** Logs can be a dumb warehouse of debug statements or the enabler of a beautiful dashboard that tells the story of your app. Plan your logging platform from day 1: how logs are collected, stored and analyzed to ensure that the desired information (e.g. error rate, following an entire transaction through services and servers, etc) can really be extracted -**Otherwise:** You end-up with a black box that is hard to reason about, then you start re-writing all logging statements to add additional information +**Otherwise:** You end up with a black box that is hard to reason about, then you start re-writing all logging statements to add additional information 🔗 [**Read More: Increase transparency using smart logging**](/sections/production/smartlogging.md) @@ -515,9 +515,9 @@ All statements above will return false if used with `===` ## ![✔] 5.4. Lock dependencies -**TL;DR:** Your code must be identical across all environments, but amazingly npm lets dependencies drift across environments by default – when you install packages at various environments it tries to fetch packages’ latest patch version. Overcome this by using npm config files, .npmrc, that tell each environment to save the exact (not the latest) version of each package. Alternatively, for finer grain control use npm” shrinkwrap”. \*Update: as of NPM5, dependencies are locked by default. The new package manager in town, Yarn, also got us covered by default +**TL;DR:** Your code must be identical across all environments, but amazingly npm lets dependencies drift across environments by default – when you install packages at various environments it tries to fetch packages’ latest patch version. Overcome this by using npm config files, .npmrc, that tell each environment to save the exact (not the latest) version of each package. Alternatively, for finer grained control use `npm shrinkwrap`. \*Update: as of NPM5, dependencies are locked by default. The new package manager in town, Yarn, also got us covered by default -**Otherwise:** QA will thoroughly test the code and approve a version that will behave differently at production. Even worse, different servers at the same production cluster might run different code +**Otherwise:** QA will thoroughly test the code and approve a version that will behave differently in production. Even worse, different servers in the same production cluster might run different code 🔗 [**Read More: Lock dependencies**](/sections/production/lockdependencies.md) @@ -525,9 +525,9 @@ All statements above will return false if used with `===` ## ![✔] 5.5. Guard process uptime using the right tool -**TL;DR:** The process must go on and get restarted upon failures. For simple scenarios, process management tools like PM2 might be enough but in today ‘dockerized’ world, cluster management tools should be considered as well +**TL;DR:** The process must go on and get restarted upon failures. For simple scenarios, process management tools like PM2 might be enough but in today's ‘dockerized’ world, cluster management tools should be considered as well -**Otherwise:** Running dozens of instances without a clear strategy and too many tools together (cluster management, docker, PM2) might lead to a DevOps chaos +**Otherwise:** Running dozens of instances without a clear strategy and too many tools together (cluster management, docker, PM2) might lead to DevOps chaos 🔗 [**Read More: Guard process uptime using the right tool**](/sections/production/guardprocess.md) @@ -535,7 +535,7 @@ All statements above will return false if used with `===` ## ![✔] 5.6. Utilize all CPU cores -**TL;DR:** At its basic form, a Node app runs on a single CPU core while all other are left idling. It’s your duty to replicate the Node process and utilize all CPUs – For small-medium apps you may use Node Cluster or PM2. For a larger app consider replicating the process using some Docker cluster (e.g. K8S, ECS) or deployment scripts that are based on Linux init system (e.g. systemd) +**TL;DR:** At its basic form, a Node app runs on a single CPU core while all others are left idling. It’s your duty to replicate the Node process and utilize all CPUs – For small-medium apps you may use Node Cluster or PM2. For a larger app consider replicating the process using some Docker cluster (e.g. K8S, ECS) or deployment scripts that are based on Linux init system (e.g. systemd) **Otherwise:** Your app will likely utilize only 25% of its available resources(!) or even less. Note that a typical server has 4 CPU cores or more, naive deployment of Node.js utilizes only 1 (even using PaaS services like AWS beanstalk!) @@ -557,7 +557,7 @@ All statements above will return false if used with `===` **TL;DR:** Application monitoring and performance products (a.k.a APM) proactively gauge codebase and API so they can auto-magically go beyond traditional monitoring and measure the overall user-experience across services and tiers. For example, some APM products can highlight a transaction that loads too slow on the end-users side while suggesting the root cause -**Otherwise:** You might spend great effort on measuring API performance and downtimes, probably you’ll never be aware which is your slowest code parts under real-world scenario and how these affects the UX +**Otherwise:** You might spend great effort on measuring API performance and downtimes, probably you’ll never be aware which is your slowest code parts under real-world scenario and how these affect the UX 🔗 [**Read More: Discover errors and downtime using APM products**](/sections/production/apmproducts.md) @@ -575,7 +575,7 @@ All statements above will return false if used with `===` ## ![✔] 5.10. Measure and guard the memory usage -**TL;DR:** Node.js has controversial relationships with memory: the v8 engine has soft limits on memory usage (1.4GB) and there are known paths to leaks memory in Node’s code – thus watching Node’s process memory is a must. In small apps, you may gauge memory periodically using shell commands but in medium-large app consider baking your memory watch into a robust monitoring system +**TL;DR:** Node.js has controversial relationships with memory: the v8 engine has soft limits on memory usage (1.4GB) and there are known paths to leak memory in Node’s code – thus watching Node’s process memory is a must. In small apps, you may gauge memory periodically using shell commands but in medium-large apps consider baking your memory watch into a robust monitoring system **Otherwise:** Your process memory might leak a hundred megabytes a day like how it happened at [Walmart](https://www.joyent.com/blog/walmart-node-js-memory-leak) @@ -595,7 +595,7 @@ All statements above will return false if used with `===` ## ![✔] 5.12. Be stateless, kill your servers almost every day -**TL;DR:** Store any type of data (e.g. users session, cache, uploaded files) within external data stores. Consider ‘killing’ your servers periodically or use ‘serverless’ platform (e.g. AWS Lambda) that explicitly enforces a stateless behavior +**TL;DR:** Store any type of data (e.g. user sessions, cache, uploaded files) within external data stores. Consider ‘killing’ your servers periodically or use ‘serverless’ platform (e.g. AWS Lambda) that explicitly enforces a stateless behavior **Otherwise:** Failure at a given server will result in application downtime instead of just killing a faulty machine. Moreover, scaling-out elasticity will get more challenging due to the reliance on a specific server @@ -605,9 +605,9 @@ All statements above will return false if used with `===` ## ![✔] 5.13. Use tools that automatically detect vulnerabilities -**TL;DR:** Even the most reputable dependencies such as Express have known vulnerabilities (from time to time) that can put a system at risk. This can get easily tamed using community and commercial tools that constantly check for vulnerabilities and warn (locally or at GitHub), some can even patch them immediately +**TL;DR:** Even the most reputable dependencies such as Express have known vulnerabilities (from time to time) that can put a system at risk. This can be easily tamed using community and commercial tools that constantly check for vulnerabilities and warn (locally or at GitHub), some can even patch them immediately -**Otherwise:** Keeping your code clean from vulnerabilities without dedicated tools will require to constantly follow online publications about new threats. Quite tedious +**Otherwise:** Keeping your code clean from vulnerabilities without dedicated tools will require you to constantly follow online publications about new threats. Quite tedious 🔗 [**Read More: Use tools that automatically detect vulnerabilities**](/sections/production/detectvulnerabilities.md) @@ -625,9 +625,9 @@ All statements above will return false if used with `===` ## ![✔] 5.15. Set NODE_ENV=production -**TL;DR:** Set the environment variable NODE_ENV to ‘production’ or ‘development’ to flag whether production optimizations should get activated – many npm packages determining the current environment and optimize their code for production +**TL;DR:** Set the environment variable NODE_ENV to ‘production’ or ‘development’ to flag whether production optimizations should get activated – many npm packages determine the current environment and optimize their code for production -**Otherwise:** Omitting this simple property might greatly degrade performance. For example, when using Express for server-side rendering omitting `NODE_ENV` makes the slower by a factor of three! +**Otherwise:** Omitting this simple property might greatly degrade performance. For example, when using Express for server-side rendering omitting `NODE_ENV` makes it slower by a factor of three! 🔗 [**Read More: Set NODE_ENV=production**](/sections/production/setnodeenv.md) @@ -635,9 +635,9 @@ All statements above will return false if used with `===` ## ![✔] 5.16. Design automated, atomic and zero-downtime deployments -**TL;DR:** Researches show that teams who perform many deployments – lowers the probability of severe production issues. Fast and automated deployments that don’t require risky manual steps and service downtime significantly improves the deployment process. You should probably achieve that using Docker combined with CI tools as they became the industry standard for streamlined deployment +**TL;DR:** Research shows that teams who perform many deployments lower the probability of severe production issues. Fast and automated deployments that don’t require risky manual steps and service downtime significantly improve the deployment process. You should probably achieve this using Docker combined with CI tools as they became the industry standard for streamlined deployment -**Otherwise:** Long deployments -> production down time & human-related error -> team unconfident and in making deployment -> less deployments and features +**Otherwise:** Long deployments -> production downtime & human-related error -> team unconfident in making deployment -> fewer deployments and features

@@ -673,7 +673,7 @@ All statements above will return false if used with `===` -**TL;DR:** Make use of security-related linter plugins such as [eslint-plugin-security](https://github.com/nodesecurity/eslint-plugin-security) to catch security vulnerabilities and issues as early as possible , at best  while they're being coded. This can help catching security weaknesses like using eval, invoking a child process or importing a module with a string literal (e.g. user input). Click 'Read more' below to see code examples that will get caught by a security linter +**TL;DR:** Make use of security-related linter plugins such as [eslint-plugin-security](https://github.com/nodesecurity/eslint-plugin-security) to catch security vulnerabilities and issues as early as possible, preferably while they're being coded. This can help catching security weaknesses like using eval, invoking a child process or importing a module with a string literal (e.g. user input). Click 'Read more' below to see code examples that will get caught by a security linter **Otherwise:** What could have been a straightforward security weakness during development becomes a major issue in production. Also, the project may not follow consistent code security practices, leading to vulnerabilities being introduced, or sensitive secrets committed into remote repositories @@ -697,7 +697,7 @@ All statements above will return false if used with `===` -**TL;DR:** Never store plain-text secrets in configuration files or source code. Instead, make use of secret-management systems like Vault products, Kubernetes/Docker Secrets, or using environment variables. As a last result, secrets stored in source control must be encrypted and managed (rolling keys, expiring, auditing, etc). Make use of pre-commit/push hooks to prevent committing secrets accidentally +**TL;DR:** Never store plain-text secrets in configuration files or source code. Instead, make use of secret-management systems like Vault products, Kubernetes/Docker Secrets, or using environment variables. As a last resort, secrets stored in source control must be encrypted and managed (rolling keys, expiring, auditing, etc). Make use of pre-commit/push hooks to prevent committing secrets accidentally **Otherwise:** Source control, even for private repositories, can mistakenly be made public, at which point all secrets are exposed. Access to source control for an external party will inadvertently provide access to related systems (databases, apis, services, etc). @@ -719,7 +719,7 @@ All statements above will return false if used with `===` ## ![✔] 6.5. Collection of generic security best practices -**TL;DR:** This is a collection of security advice that are not related directly to Node.js - the Node implementation is not much different than any other language. Click read more to skim through. +**TL;DR:** This is a collection of security advice that is not related directly to Node.js - the Node implementation is not much different than any other language. Click read more to skim through. 🔗 [**Read More: Common security best practices**](/sections/security/commonsecuritybestpractices.md) @@ -731,7 +731,7 @@ All statements above will return false if used with `===` **TL;DR:** Your application should be using secure headers to prevent attackers from using common attacks like cross-site scripting (XSS), clickjacking and other malicious attacks. These can be configured easily using modules like [helmet](https://www.npmjs.com/package/helmet). -**Otherwise:** Attackers could perform direct attacks on your application's users, leading huge security vulnerabilities +**Otherwise:** Attackers could perform direct attacks on your application's users, leading to huge security vulnerabilities 🔗 [**Read More: Using secure headers in your application**](/sections/security/secureheaders.md) @@ -765,9 +765,9 @@ All statements above will return false if used with `===` -**TL;DR:** Untrusted data that is sent down to the browser might get executed instead of just being displayed, this is commonly being referred as a cross-site-scripting (XSS) attack. Mitigate this by using dedicated libraries that explicitly mark the data as pure content that should never get executed (i.e. encoding, escaping) +**TL;DR:** Untrusted data that is sent down to the browser might get executed instead of just being displayed, this is commonly referred as a cross-site-scripting (XSS) attack. Mitigate this by using dedicated libraries that explicitly mark the data as pure content that should never get executed (i.e. encoding, escaping) -**Otherwise:** An attacker might store a malicious JavaScript code in your DB which will then be sent as-is to the poor clients +**Otherwise:** An attacker might store malicious JavaScript code in your DB which will then be sent as-is to the poor clients 🔗 [**Read More: Escape output**](/sections/security/escape-output.md) @@ -777,7 +777,7 @@ All statements above will return false if used with `===` -**TL;DR:** Validate the incoming requests' body payload and ensure it qualifies the expectations, fail fast if it doesn't. To avoid tedious validation coding within each route you may use lightweight JSON-based validation schemas such as [jsonschema](https://www.npmjs.com/package/jsonschema) or [joi](https://www.npmjs.com/package/joi) +**TL;DR:** Validate the incoming requests' body payload and ensure it meets expectations, fail fast if it doesn't. To avoid tedious validation coding within each route you may use lightweight JSON-based validation schemas such as [jsonschema](https://www.npmjs.com/package/jsonschema) or [joi](https://www.npmjs.com/package/joi) **Otherwise:** Your generosity and permissive approach greatly increases the attack surface and encourages the attacker to try out many inputs until they find some combination to crash the application @@ -801,7 +801,7 @@ All statements above will return false if used with `===` -**TL;DR:** A brute force protection middleware such as [express-brute](https://www.npmjs.com/package/express-brute) should be used inside an express application to prevent brute force/dictionary attacks on sensitive routes such as /admin or /login based on request properties such as the user name, or other identifiers such as body parameters +**TL;DR:** A brute force protection middleware such as [express-brute](https://www.npmjs.com/package/express-brute) should be used inside an express application to prevent brute force/dictionary attacks on sensitive routes such as /admin or /login based on request properties such as the username, or other identifiers such as body parameters **Otherwise:** An attacker can issue unlimited automated password attempts to gain access to privileged accounts on an application @@ -813,7 +813,7 @@ All statements above will return false if used with `===` -**TL;DR:** There is a common scenario where Node.js runs as a root user with unlimited permissions. For example, this is the default behaviour in Docker containers. It's recommended to create a non-root user and either bake it into the Docker image (examples given below) or run the process on this users' behalf by invoking the container with the flag "-u username" +**TL;DR:** There is a common scenario where Node.js runs as a root user with unlimited permissions. For example, this is the default behaviour in Docker containers. It's recommended to create a non-root user and either bake it into the Docker image (examples given below) or run the process on this user's behalf by invoking the container with the flag "-u username" **Otherwise:** An attacker who manages to run a script on the server gets unlimited power over the local machine (e.g. change iptable and re-route traffic to his server) @@ -837,9 +837,9 @@ All statements above will return false if used with `===` -**TL;DR:** `eval` is evil as it allows executing a custom JavaScript code during run time. This is not just a performance concern but also an important security concern due to malicious JavaScript code that may be sourced from user input. Another language feature that should be avoided is `new Function` constructor. `setTimeout` and `setInterval` should never be passed dynamic JavaScript code either. +**TL;DR:** `eval` is evil as it allows executing custom JavaScript code during run time. This is not just a performance concern but also an important security concern due to malicious JavaScript code that may be sourced from user input. Another language feature that should be avoided is `new Function` constructor. `setTimeout` and `setInterval` should never be passed dynamic JavaScript code either. -**Otherwise:** Malicious JavaScript code finds a way into a text passed into `eval` or other real-time evaluating JavaScript language functions, and will gain complete access to JavaScript permissions on the page. This vulnerability is often manifested as an XSS attack. +**Otherwise:** Malicious JavaScript code finds a way into text passed into `eval` or other real-time evaluating JavaScript language functions, and will gain complete access to JavaScript permissions on the page. This vulnerability is often manifested as an XSS attack. 🔗 [**Read More: Avoid JavaScript eval statements**](/sections/security/avoideval.md) @@ -873,7 +873,7 @@ All statements above will return false if used with `===` -**TL;DR:** When tasked to run external code that is given at run-time (e.g. plugin), use any sort of 'sandbox' execution environment that isolates and guards the main code against the plugin. This can be achieved using a dedicated process (e.g. cluster.fork()), serverless environment or dedicated npm packages that acting as a sandbox +**TL;DR:** When tasked to run external code that is given at run-time (e.g. plugin), use any sort of 'sandbox' execution environment that isolates and guards the main code against the plugin. This can be achieved using a dedicated process (e.g. `cluster.fork()`), serverless environment or dedicated npm packages that act as a sandbox **Otherwise:** A plugin can attack through an endless variety of options like infinite loops, memory overloading, and access to sensitive process environment variables From ee66477a09c1a26bd55651eada6de76439e6db37 Mon Sep 17 00:00:00 2001 From: ArlindXh Date: Thu, 14 Feb 2019 13:24:41 +0100 Subject: [PATCH 03/13] typo fix at 4.1 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d93fe2cb..da4ecf55 100644 --- a/README.md +++ b/README.md @@ -405,7 +405,7 @@ All statements above will return false if used with `===` ## ![✔] 4.1 At the very least, write API (component) testing -**TL;DR:** Most projects just don't have any automated testing due to short timetables or often the 'testing project' run out of control and being abandoned. For that reason, prioritize and start with API testing which is the easiest to write and provides more coverage than unit testing (you may even craft API tests without code using tools like [Postman](https://www.getpostman.com/). Afterward, should you have more resources and time, continue with advanced test types like unit testing, DB testing, performance testing, etc +**TL;DR:** Most projects just don't have any automated testing due to short timetables or often the 'testing project' ran out of control and was abandoned. For that reason, prioritize and start with API testing which is the easiest way to write and provide more coverage than unit testing (you may even craft API tests without code using tools like [Postman](https://www.getpostman.com/). Afterward, should you have more resources and time, continue with advanced test types like unit testing, DB testing, performance testing, etc **Otherwise:** You may spend long days on writing unit tests to find out that you got only 20% system coverage From c9333be9b0584b79eb3067428ee873d1cb2ca28c Mon Sep 17 00:00:00 2001 From: ArlindXh Date: Thu, 14 Feb 2019 16:21:28 +0100 Subject: [PATCH 04/13] typo fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index da4ecf55..9441cb98 100644 --- a/README.md +++ b/README.md @@ -405,7 +405,7 @@ All statements above will return false if used with `===` ## ![✔] 4.1 At the very least, write API (component) testing -**TL;DR:** Most projects just don't have any automated testing due to short timetables or often the 'testing project' ran out of control and was abandoned. For that reason, prioritize and start with API testing which is the easiest way to write and provide more coverage than unit testing (you may even craft API tests without code using tools like [Postman](https://www.getpostman.com/). Afterward, should you have more resources and time, continue with advanced test types like unit testing, DB testing, performance testing, etc +**TL;DR:** Most projects just don't have any automated testing due to short timetables or often the 'testing project' ran out of control and was abandoned. For that reason, prioritize and start with API testing which is the easiest way to write and provides more coverage than unit testing (you may even craft API tests without code using tools like [Postman](https://www.getpostman.com/). Afterward, should you have more resources and time, continue with advanced test types like unit testing, DB testing, performance testing, etc **Otherwise:** You may spend long days on writing unit tests to find out that you got only 20% system coverage From 67e7c3b49c166a2c4215e5c75c09cd5c728befef Mon Sep 17 00:00:00 2001 From: Teddy Toussaint Date: Thu, 14 Feb 2019 17:10:50 +0100 Subject: [PATCH 05/13] Typo fix --- sections/security/bcryptpasswords.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sections/security/bcryptpasswords.md b/sections/security/bcryptpasswords.md index 4c8fb25b..29e00c05 100644 --- a/sections/security/bcryptpasswords.md +++ b/sections/security/bcryptpasswords.md @@ -2,7 +2,7 @@ ### One Paragraph Explainer -When storing user passwords, using an adaptive hashing algorithm such as bcrypt, offered by the [bcrypt npm module](https://www.npmjs.com/package/bcrypt) is recommended as opposed to using the native Node.js crypto module. `Math.random()` should also never be used as part of any password or token generation due to it's predictability. +When storing user passwords, using an adaptive hashing algorithm such as bcrypt, offered by the [bcrypt npm module](https://www.npmjs.com/package/bcrypt) is recommended as opposed to using the native Node.js crypto module. `Math.random()` should also never be used as part of any password or token generation due to its predictability. The `bcrypt` module or similar should be used as opposed to the JavaScript implementation, as when using `bcrypt`, a number of 'rounds' can be specified in order to provide a secure hash. This sets the work factor or the number of 'rounds' the data is processed for, and more hashing rounds leads to more secure hash (although this at the cost of CPU time). The introduction of hashing rounds means that the brute force factor is significantly reduced, as password crackers are slowed down increasing the time required to generate one attempt. From 59e6e8f47442b43278fd59e6f479d53e85bd0c49 Mon Sep 17 00:00:00 2001 From: i0natan Date: Sat, 16 Feb 2019 23:09:55 +0200 Subject: [PATCH 06/13] Genereic message --- README.md | 37 +++++++++--- .../images/test-report-like-requirements.jpeg | Bin 0 -> 166118 bytes sections/testingandquality/3-parts-in-name.md | 54 ++++++++++++++++++ 3 files changed, 83 insertions(+), 8 deletions(-) create mode 100644 assets/images/test-report-like-requirements.jpeg create mode 100644 sections/testingandquality/3-parts-in-name.md diff --git a/README.md b/README.md index 9441cb98..97883e45 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,15 @@ Read in a different language: [![CN](/assets/flags/CN.png)**CN**](/README.chines
+# Latest Best Practices and News +- **New Best Practice:** 4.10: Include 3 parts in each test name - [*From the section "Testing and overall quality"*](https://github.com/i0natan/nodebestpractices#4-testing-and-overall-quality-practices) + +- **New Best Practice:** 7.1: Prefer native JS methods over user-land utils like Lodash - [*From the section "Performance"*](https://github.com/i0natan/nodebestpractices#7-performance-best-practices) + +- **News updates** - [We kicked-off the performance section, wanna join?](https://github.com/i0natan/nodebestpractices/issues/302) + +

+ # Welcome! 3 Things You Ought To Know First: **1. You are, in fact, reading dozens of the best Node.js articles -** this repository is a summary and curation of the top-ranked content on Node.js best practices, as well as content written here by collaborators @@ -411,7 +420,19 @@ All statements above will return false if used with `===`

-## ![✔] 4.2 Detect code issues with a linter +## ![✔] 4.2 Include 3 parts in each test name + +**TL;DR:** Make the test speak at the requirements level so it's self explanatory also to QA engineers and developers who are not familiar with the code internals. State in the test name what it being tested (unit under test), under what circumstances and what is the expected result + + +**Otherwise:** A deployment just failed, a test named “Add product” failed. Does this tell you what exactly is malfunctioning? + +🔗 [**Read mode: Include 3 parts in each test name**](🔗 [**Read More: Refactoring!**](/sections/testingandquality/3-parts-in-name.md)) + +

+ + +## ![✔] 4.3 Detect code issues with a linter **TL;DR:** Use a code linter to check basic quality and detect anti-patterns early. Run it before any test and add it as a pre-commit git-hook to minimize the time needed to review and correct any issue. Also check [Section 3](https://github.com/i0natan/nodebestpractices#3-code-style-practices) on Code Style Practices @@ -419,7 +440,7 @@ All statements above will return false if used with `===`

-## ![✔] 4.3 Carefully choose your CI platform (Jenkins vs CircleCI vs Travis vs Rest of the world) +## ![✔] 4.4 Carefully choose your CI platform (Jenkins vs CircleCI vs Travis vs Rest of the world) **TL;DR:** Your continuous integration platform (CICD) will host all the quality tools (e.g test, lint) so it should come with a vibrant ecosystem of plugins. [Jenkins](https://jenkins.io/) used to be the default for many projects as it has the biggest community along with a very powerful platform at the price of complex setup that demands a steep learning curve. Nowadays, it has become much easier to set up a CI solution using SaaS tools like [CircleCI](https://circleci.com) and others. These tools allow crafting a flexible CI pipeline without the burden of managing the whole infrastructure. Eventually, it's a trade-off between robustness and speed - choose your side carefully @@ -429,7 +450,7 @@ All statements above will return false if used with `===`

-## ![✔] 4.4 Constantly inspect for vulnerable dependencies +## ![✔] 4.5 Constantly inspect for vulnerable dependencies **TL;DR:** Even the most reputable dependencies such as Express have known vulnerabilities. This can get easily tamed using community and commercial tools such as 🔗 [npm audit](https://docs.npmjs.com/cli/audit) and 🔗 [snyk.io](https://snyk.io) that can be invoked from your CI on every build @@ -437,7 +458,7 @@ All statements above will return false if used with `===`

-## ![✔] 4.5 Tag your tests +## ![✔] 4.6 Tag your tests **TL;DR:** Different tests must run on different scenarios: quick smoke, IO-less, tests should run when a developer saves or commits a file, full end-to-end tests usually run when a new pull request is submitted, etc. This can be achieved by tagging tests with keywords like #cold #api #sanity so you can grep with your testing harness and invoke the desired subset. For example, this is how you would invoke only the sanity test group with [Mocha](https://mochajs.org/): mocha --grep 'sanity' @@ -445,7 +466,7 @@ All statements above will return false if used with `===`

-## ![✔] 4.6 Check your test coverage, it helps to identify wrong test patterns +## ![✔] 4.7 Check your test coverage, it helps to identify wrong test patterns **TL;DR:** Code coverage tools like [Istanbul/NYC ](https://github.com/gotwarlost/istanbul)are great for 3 reasons: it comes for free (no effort is required to benefit this reports), it helps to identify a decrease in testing coverage, and last but not least it highlights testing mismatches: by looking at colored code coverage reports you may notice, for example, code areas that are never tested like catch clauses (meaning that tests only invoke the happy paths and not how the app behaves on errors). Set it to fail builds if the coverage falls under a certain threshold @@ -453,7 +474,7 @@ All statements above will return false if used with `===`

-## ![✔] 4.7 Inspect for outdated packages +## ![✔] 4.8 Inspect for outdated packages **TL;DR:** Use your preferred tool (e.g. 'npm outdated' or [npm-check-updates](https://www.npmjs.com/package/npm-check-updates) to detect installed packages which are outdated, inject this check into your CI pipeline and even make a build fail in a severe scenario. For example, a severe scenario might be when an installed package is 5 patch commits behind (e.g. local version is 1.3.1 and repository version is 1.3.8) or it is tagged as deprecated by its author - kill the build and prevent deploying this version @@ -461,7 +482,7 @@ All statements above will return false if used with `===`

-## ![✔] 4.8 Use docker-compose for e2e testing +## ![✔] 4.9 Use docker-compose for e2e testing **TL;DR:** End to end (e2e) testing which includes live data used to be the weakest link of the CI process as it depends on multiple heavy services like DB. Docker-compose turns this problem into a breeze by crafting production-like environment using a simple text file and easy commands. It allows crafting all the dependent services, DB and isolated network for e2e testing. Last but not least, it can keep a stateless environment that is invoked before each test suite and dies right after @@ -469,7 +490,7 @@ All statements above will return false if used with `===`

-## ![✔] 4.9 Refactor regularly using static analysis tools +## ![✔] 4.10 Refactor regularly using static analysis tools **TL;DR:** Using static analysis tools helps by giving objective ways to improve code quality and keeps your code maintainable. You can add static analysis tools to your CI build to fail when it finds code smells. Its main selling points over plain linting are the ability to inspect quality in the context of multiple files (e.g. detect duplications), perform advanced analysis (e.g. code complexity) and follow the history and progress of code issues. Two examples of tools you can use are [Sonarqube](https://www.sonarqube.org/) (2,600+ [stars](https://github.com/SonarSource/sonarqube)) and [Code Climate](https://codeclimate.com/) (1,500+ [stars](https://github.com/codeclimate/codeclimate)). diff --git a/assets/images/test-report-like-requirements.jpeg b/assets/images/test-report-like-requirements.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..58eb26d3d892fa86e097c69f12d289672b7deede GIT binary patch literal 166118 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

11=I?DZfou$pi1Bu z^5%R=#WBW26ZT_GLlnHJwEdCCI8VP}+E+lrc(HmW!5Oo`>(;jw&EcuXw95m5M2HL< zp|ewJn*RYo2J2iXM?XKv)e5l9^|en{eLtLp1?|Q#lk9j}+MuhDp>d)>(L!86SF;5$ z4&bs4c38=OS=>@R*XU+%AoJcvqUDBV$C@(3=y4Y*DyS~1haFu$Gq7%E)x4WDzCOI` z0$N8P)d+?1L1q59JZ)n|g-5y-*7}$U5YDjtD#y%jx=t~8&$<%NE$|H-r)Z#iO&*9HBY{}J$AzdhoX785g zL!*Ax(C)6W{rVlr%fF`}O)0*;o9<09s;9cHf)sCD35{iszvu2=3s?GVxw@`#z^WnO z&?MZ+TB#VVOyCtrh5#Rk-w93EUbN0^E!1!?Q0AB}N`EokV`Sf?`>2sgi~KMN{a-D5EPnt#;iDtzM+wKe96Dp$rEG^NUkLGzVV$|=&>1U zle-O|l-9Um)l{>za^F@fKfrqL)Gm0VXJL0k4EwTn)8+5PWnP)7E(kGgNlce%tJThb z;?9{xB`rA4?#2`0A&r~(wTH>Sa%m_PyLw02R+@98^0;J!-mFbUmHNl%8_o^gEPDch z9o$55FpnsB-;xD8hFrHA@bHhg)6-ibb5eV+EQn)&Q^9a9PeEfUbwKxA!72a65_zD$UWOSz$9@grdkRL3dSP~5}P za>MkH@vo)1s;KMUp`Uj@gD;0i_>Ry``&TA^Hd`8SsVxR~&@_JuV|w`4chHza%XfFJ zg5q<&h|nYmj{>M1h#vEehOjL0FCGkUS;oENAqVBQzvPD{|xB}Ja zVbi*P*FuoFzvY~2SN&{JW6Vplwt~$U{uYFKmCxhTV<(TdDBE^e5!byq{#C}^^IZl& zHn-wz6!U7f7K#45p=@b~a5$s?S~gBLpiDz0nTVt254vR9r2l2=wC-DNvMRX3IFD$m z~Sv`0|UJ5)$CT4u7@8tXG-AJDcsb(#5tS09&FYUd%q`>?Z1TuQ@c^jSV! zfb(M3{I$ghPh}m+I>qw^t=VN>W$`@7`D*x@gAZZnn7Ez0iT$({tTATexwT0;;Z~#M z?8)-wlT8qQm-rN4RhJ*dSY{TTuc0+<3WT1M5p+QLbdvUt?;57cd5c;1W}E-BArR<4wyrw9{m1s!F91ddSfo}5)zSXS zGDVmgOg5FR9;9!n+Y8L{pXh3r>*#nd8@`_#btB1mcF6pq!qHEXsK_ooh{R|oW<-Jf zh9CP0?S~SKyQ77JG3s${dR8tI7+ZsR)%ZU%O=AM{+|IaKjI=hpl{jyYSD0wPR}#nJ z7~5eh;^xrsRDWB8yYC4@g_J%u#0D?$^l!g>bFkr*N;9tAf_!hYS&qM|aU5DvkHO>3%M2O=1ya%>@>naD5E>VtGE93Y-jcS@$~Jdp$rJr4S@wCl8G)66 z*2fVYp~MP@w;olS)nc&NhJCmrE9 z6OoZJ(!+TB=@c%pT}T=N^t&KEtga%?y^yZp08SCzFXqo`JinL@GYRCRO`+h%95Y6J8&A*$b#@%m=Ce`rMd=2~TF&nqs0i?=^V4y0 zG`PbQRQOQG-YCGvGU*>si(q^RD^?v9TsAlb@uyqTF7S4?hXskZdV5s}W_KtPl^gOZ zv)Z|*)bz-R|vb?mHa&&eraKqPh+ubAST<@?!36C-Ht;Y3Ni4E%7YeZ$NW{>Yx{4iU4I{=goC3jg4%2m5(1*GZz_H= zB!I#_KmOQH^e)ImLyll*>VAdhrHC6%ObY5URn{9-Nabo&uTEAW8ZE~?`;bW8m52aG zt}8!T@e!Cg<2&{>UvEq=eyCe-WJ^cXV)51~?()~akdfJ`wwtD%X&Z?*+tYi2*^Nvq{<0F97TjQnNuiuQk^t zBjK)|r;8YxRw6U&WXVO|dHgLknRHz_pxtGM^+xtm+>LFpV;o9L27OTqgl69ZeV-dyGp>_bK<_AD2I69Lb+^Z{WWmwd_i|##MM?3ag;e~D$ z^hnIY$&uGEvi+s(75n4i?j{-jjJ!Pi$67*C4`@6*hrJ71u8yj|Lo?uDWbX(R7lYvHUhzBJU#uU(? z{V}{~)OU$|RtT8tSqRUaaRA>2X- zv%K07?Z%&tl06wX`5t6&CW2_JNhjKHkGr*o8O2jV-5f)!mW?;eLn~U_+ckEwZx=YJ z=jz40fZ|Z|Yz=2ecYE~Y;)C{|1xk!;7yKHaVAtQ*Lm_y;dQHWLQtjPV%F`T#@Xd6+ zL_MrUY{ozNvy_#!sGnMIHn!UqWX10xezSHAs(dI%eyoKu!hXEA#=h)>Z3V+nt%JHG zSRH}D%>h&V*=nQT-&Q#~K4ib()TpDk)RpyOX$1e3`*P4?y8hlT*LUasV!Btx%C|<2 zUZO9) zV!KPonXzRgO%D3QZy0q%4sVD;bAE-9*$I^Fm=wb;JYi2Q73m(r^O#Hzl+d; zakgce=IHn29wm*&`?$*F@daE2-Fqyk=xSWjt{O0EOV7hEpHnxPLZa%2zS^ogZbiRc z((9Oqvup)1KozgeYeY#Dg|yxQdO$i^BXlS-C8`;A?_l!> zW7KH^VnR6J9i?{9ilHa_YgKDu&<;rbHQz4*UBiayqmr(9nA?#6$Mw~H{c6v;g%4p0 z)K)o`k1;2m7?C@|Dl{=ry#2n^(N!Qk=VsT@<~FNSZ)x7o)F8z_%x>PWlb?~lvmY}3 z_xNhqYIS@FDC6=B3R1u=(T?Gwt}pG8+U)jPz8!7xQrbHQlb?0C{70=i+L@WdLNbgu zS6$wwt(&Z=`nmG1Gf!)Rc@4oT zj1+*ea~S1W!RR|StTQ^pD1uZ=eMYRp@M&YWMTPW`N(*k5L*F)0F;>;L7p*Tqb*PEe zMOww@z7lxcfSwv!lxMRNJne4HZJ2^ym-*Otr|uPmj1zYqnVZZ;MUAEq#cOe&DvsBXh3O|?*Np*kjZ zxx1fQg4+F_$k^&t<%0*p&+9xK?v2RV!To!GXZ;)Wm)7XZQ6ZG!3N$zUU8W&{ODmX^;@I z<=zrO*gR8QK)!%gK66=O?~W~+=Qg_JAJClduCMPm|M5FD1)R`j7u{P4OCzIyciH-v zqrK7PzZ~sp{@u}DB!o+I)Y?_2@kXu;u;N)Bzn|OW-r14o6Aa0b>Deq_k31oD(IW`% zX)fD1kT9gM>=(QEGUw^W95zN_lgZ!y70-v$d!<&BeIW6q|Ai7)Tpw;bch~mt2F^Ut z`RJBDFZ~i@ThgUJT=k=gMQ0D6_v*6= zGuMMO9~4rF%88vj+^@GVIq(y7$*$K)A$gwGm1uDm22z$rdzvn>a?I2eBii#`HpD%y zZ<*7S28##cao+s6oCqkLdKZ&WE6XGsg69U&ZCKnmIT`rNXTU~mq?(idkU?|JK#hn&BxsRyafEf@>VT9$WJ zR59Z?N>Y$i9oI?U&@eygvf&|2;Gy3O=W*_lS^V4CQBED)??Z85L*WuTc9bkPQTos{ zq;{~v)ZA*#c+`_=!;D>1l&G)E<+_EAC471LqQ5!?t5uvm3K{e;>-w!^d%4<~Y16nS zavaChvp1M_6x}tYh~<+A3t@BFkZfNRtn=y1(7a7=^?MmWIYi%I&p?=2e@2zkhRb%3 zV8$Y55V-x`whpvjh49RMYM<}YdeAd}RJ%>}nLv-DUZPJS;YJ?=7S)yRaK`W}7 z8&%|LQt+G7`We|?;mO~B{Xc7!@++rh{lTRW>STVhKkdGX&7HcY8-LN$);gz;!q1PZ z)vJUT)o+k35*Kz6vivp5hl`+T6i7oL%g&qVsG+|Njd8H^31Q+F0z=Cq#!V&eYToI$ z5WE7u`+XbWg$owQ)^STa()rD3^j12l^6Crm-}lx`1Dp=1)JceMXUWv{@j*eNcO0{B zsug)Jo8sItmw=BZZ=P&Yj)Hh_lZh~P8DJ~U4c=#T8`AZ26If_I*>NhN46qpiuaz(; zGBBT6a?}9|uaX{cLly2kxG^s}wUn#DYmh&&JB5RpRs(;M0j`rw#zA{o} zA3BDa{q9XY(CwkYO*iV1_NxxXDnAAUS-f}4K*rK)^;>pR^FW_g!^Tf^vt3n;(RdLd4*jDX%nR$@qajehMZC<}w4lz}HZ+8Owck_tlXWrY zZ-16>IbGb`-+3@R|MxeN^WXn+Hn>=!Ka8XB=BWG&Oa$&W_o7HU9e#fVTZ{CwcfeTo zv!$~dwt8vn-qki6Hi+C-Jtuwx<1n##ptQ-Bc5;-ONV@8yG-AI#C1rX?uL88$LYK2 zT}tIgEuA^RBl`keXWE`GJgIaz2BBi(Ze%3kZ_@{5&l-?Z;KP-=a9KZO1wx`>PEgd- zrbMe|&?$TBVZ7a{Pz!$&BVA%KGjsNKmS9URQA$T)GSJiJd`Ldd4C#LK9t$pX0jA*S9*06=gkv1lEQzXOcYc%PLyPj?>n zG_@OHME2lbO^0gQ0N#5XimgnJj7+~+c_x=Jl*O~j)&7(a2aJ4L<*Mt3eb3i7Md_

3;b@^Gl^r!`;HExy=ZLeyd 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
+ +### One Paragraph Explainer + +A test report should tell whether the current application revision satisfies the requirements for the people who are not necessarily familiar with the code: the tester, the DevOps engineer who is deploying and the future you two years from now. This can be achieved best if the tests speak at the requirements level and include 3 parts: + +(1) What is being tested? For example, the ProductsService.addNewProduct method + +(2) Under what circumstances and scenario? For example, no price is passed to the method + +(3) What is the expected result? For example, the new product is not approved + +

+ +### Code example: a test name that incluces 3 parts +```javascript +//1. unit under test +describe('Products Service', function() { + describe('Add new product', function() { + //2. scenario and 3. expectation + it('When no price is specified, then the product status is pending approval', ()=> { + const newProduct = new ProductService().add(...); + expect(newProduct.status).to.equal('pendingApproval'); + }); + }); +}); +``` + +

+ +### Code Example – Anti Pattern: one must read the entire test code to understand the intent +```javascript +describe('Products Service', function() { + describe('Add new product', function() { + it('Should return the right status', ()=> { + //hmm, what is this test checking? what are the scenario and expectation? + const newProduct = new ProductService().add(...); + expect(newProduct.status).to.equal('pendingApproval'); + }); + }); +}); +``` + +

+ +### "Doing It Right Example: The test report resembles the requirements document" + + [From the blog "30 Node.js testing best practices" by Yoni Goldberg](https://medium.com/@me_37286/yoni-goldberg-javascript-nodejs-testing-best-practices-2b98924c9347) + + ![A test report example](https://github.com/i0natan/nodebestpractices/blob/master/assets/images/test-report-like-requirements.jpeg "A test report example") + +

\ No newline at end of file From aa15da1964cacb818ab6d3b3781546753925344e Mon Sep 17 00:00:00 2001 From: i0natan Date: Sat, 16 Feb 2019 23:11:17 +0200 Subject: [PATCH 07/13] Added news, updates and new BP: 4.2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 97883e45..f3fd8889 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ Read in a different language: [![CN](/assets/flags/CN.png)**CN**](/README.chines
# Latest Best Practices and News -- **New Best Practice:** 4.10: Include 3 parts in each test name - [*From the section "Testing and overall quality"*](https://github.com/i0natan/nodebestpractices#4-testing-and-overall-quality-practices) +- **New Best Practice:** 4.2: Include 3 parts in each test name - [*From the section "Testing and overall quality"*](https://github.com/i0natan/nodebestpractices#4-testing-and-overall-quality-practices) - **New Best Practice:** 7.1: Prefer native JS methods over user-land utils like Lodash - [*From the section "Performance"*](https://github.com/i0natan/nodebestpractices#7-performance-best-practices) From 89cf3079fe1f15f53cabac0e690d8d86eb4b42b7 Mon Sep 17 00:00:00 2001 From: i0natan Date: Sat, 16 Feb 2019 23:14:49 +0200 Subject: [PATCH 08/13] Added news, updates and new BP: 4.2 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f3fd8889..ba5c3f6e 100644 --- a/README.md +++ b/README.md @@ -404,7 +404,7 @@ All statements above will return false if used with `===` **Otherwise:** Longer code (in ES5 functions) is more prone to bugs and cumbersome to read -🔗 [**Read mode: It’s Time to Embrace Arrow Functions**](https://medium.com/javascript-scene/familiarity-bias-is-holding-you-back-its-time-to-embrace-arrow-functions-3d37e1a9bb75) +🔗 [**Read more: It’s Time to Embrace Arrow Functions**](https://medium.com/javascript-scene/familiarity-bias-is-holding-you-back-its-time-to-embrace-arrow-functions-3d37e1a9bb75)


@@ -427,7 +427,7 @@ All statements above will return false if used with `===` **Otherwise:** A deployment just failed, a test named “Add product” failed. Does this tell you what exactly is malfunctioning? -🔗 [**Read mode: Include 3 parts in each test name**](🔗 [**Read More: Refactoring!**](/sections/testingandquality/3-parts-in-name.md)) +🔗 [**Read More: Include 3 parts in each test name**](/sections/testingandquality/3-parts-in-name.md))

From 1b9be08cf25394a88def893ff96fe38ce4abe402 Mon Sep 17 00:00:00 2001 From: i0natan Date: Sat, 16 Feb 2019 23:15:25 +0200 Subject: [PATCH 09/13] Added news, updates and new BP: 4.2 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ba5c3f6e..1546af86 100644 --- a/README.md +++ b/README.md @@ -427,7 +427,7 @@ All statements above will return false if used with `===` **Otherwise:** A deployment just failed, a test named “Add product” failed. Does this tell you what exactly is malfunctioning? -🔗 [**Read More: Include 3 parts in each test name**](/sections/testingandquality/3-parts-in-name.md)) +🔗 [**Read More: Include 3 parts in each test name**](/sections/testingandquality/3-parts-in-name.md)

From 6287a7bf98fc48c679864ca903b8761af8533ce4 Mon Sep 17 00:00:00 2001 From: Yoni Goldberg Date: Mon, 18 Feb 2019 09:18:53 +0200 Subject: [PATCH 10/13] Per Bruno's remark --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1546af86..9dd678b5 100644 --- a/README.md +++ b/README.md @@ -422,7 +422,7 @@ All statements above will return false if used with `===` ## ![✔] 4.2 Include 3 parts in each test name -**TL;DR:** Make the test speak at the requirements level so it's self explanatory also to QA engineers and developers who are not familiar with the code internals. State in the test name what it being tested (unit under test), under what circumstances and what is the expected result +**TL;DR:** Make the test speak at the requirements level so it's self explanatory also to QA engineers and developers who are not familiar with the code internals. State in the test name what is being tested (unit under test), under what circumstances and what is the expected result **Otherwise:** A deployment just failed, a test named “Add product” failed. Does this tell you what exactly is malfunctioning? From 830907a95820ad5067cfbceda6e4378a7b551b69 Mon Sep 17 00:00:00 2001 From: Lewis Date: Wed, 20 Feb 2019 07:40:20 -0800 Subject: [PATCH 11/13] Include new Function within avoideval.md Dynamic execution of JavaScript also happens in new Function, which is even referenced here: https://github.com/i0natan/nodebestpractices#-615-avoid-javascript-eval-statements, so this should be included. --- sections/security/avoideval.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sections/security/avoideval.md b/sections/security/avoideval.md index e034216f..175438bc 100644 --- a/sections/security/avoideval.md +++ b/sections/security/avoideval.md @@ -2,7 +2,7 @@ ### One Paragraph Explainer -`eval()`, `setTimeout()` and `setInterval()` are global functions, often used in Node.js, which accept a string parameter representing a JavaScript expression, statement, or sequence of statements. The security concern of using these functions is the possibility that untrusted user input might find its way into code execution leading to server compromise, as evaluating user code essentially allows an attacker to perform any actions that you can. It is suggested to refactor code to not rely on the usage of these functions where user input could be passed to the function and executed. +`eval()`, `setTimeout()`, `setInterval()`, and `new Function()` are global functions, often used in Node.js, which accept a string parameter representing a JavaScript expression, statement, or sequence of statements. The security concern of using these functions is the possibility that untrusted user input might find its way into code execution leading to server compromise, as evaluating user code essentially allows an attacker to perform any actions that you can. It is suggested to refactor code to not rely on the usage of these functions where user input could be passed to the function and executed. ### Code example @@ -20,4 +20,4 @@ From the Essential Node.js Security book by [Liran Tal](https://leanpub.com/node > The eval() function is perhaps of the most frowned upon JavaScript pieces from a security perspective. It parses a JavaScript string as text, and executes it as if it were a JavaScript code. Mixing that with untrusted user input that might find it’s way to eval() is a recipe for disaster that -can end up with server compromise. \ No newline at end of file +can end up with server compromise. From a1477e4a0993ce1b83bbc833c41d8267bc1f32c8 Mon Sep 17 00:00:00 2001 From: Lewis Date: Thu, 21 Feb 2019 17:06:02 -0800 Subject: [PATCH 12/13] Grammar improvements to secureserver.md I read this page and saw a few grammar improvements, hopefully you like them. --- sections/security/secureserver.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/sections/security/secureserver.md b/sections/security/secureserver.md index 180d64bb..8b15fadb 100644 --- a/sections/security/secureserver.md +++ b/sections/security/secureserver.md @@ -5,9 +5,9 @@ ### One Paragraph Explainer -Using services like the [Let'sEncrypt](https://letsencrypt.org/) certificate authority providing __free__ ssl/tls certificates, you can easily obtain a certificate to secure your application. Node.js frameworks like [Express](http://expressjs.com/) (based on the core `https` module) support ssl/tls based servers easily, so the configuration can be done in a few lines of additional code. +Using services such as [Let's Encrypt](https://letsencrypt.org/), a certificate authority who provide __free__ SSL/TLS certificates, can help encrypt the communication of your applications. Node.js frameworks like [Express](http://expressjs.com/) (based on the core `https` module) supports SSL/TLS, which can be implemented in a few lines of code. -You can also configure ssl/tls on your reverse proxy pointing to your application for example using [nginx](http://nginx.org/en/docs/http/configuring_https_servers.html) or HAProxy. +You can also configure SSL/TLS on a reverse proxy, such as [NGINX](http://nginx.org/en/docs/http/configuring_https_servers.html) or HAProxy.

@@ -20,7 +20,7 @@ const app = express(); const options = { // The path should be changed accordingly to your setup cert: fs.readFileSync('./sslcert/fullchain.pem'), - key: fs.readFileSync('./sslcert/privkey.pem') + key: fs.readFileSync('./sslcert/privkey.pem'), }; https.createServer(options, app).listen(443); ``` From 807fe9dea8eef2cf1b32a66f34d0ec95c31966ca Mon Sep 17 00:00:00 2001 From: Lewis Date: Fri, 22 Feb 2019 08:26:25 -0800 Subject: [PATCH 13/13] Slight changes Suggested changes from comments --- sections/security/secureserver.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sections/security/secureserver.md b/sections/security/secureserver.md index 8b15fadb..2f287e65 100644 --- a/sections/security/secureserver.md +++ b/sections/security/secureserver.md @@ -5,7 +5,7 @@ ### One Paragraph Explainer -Using services such as [Let's Encrypt](https://letsencrypt.org/), a certificate authority who provide __free__ SSL/TLS certificates, can help encrypt the communication of your applications. Node.js frameworks like [Express](http://expressjs.com/) (based on the core `https` module) supports SSL/TLS, which can be implemented in a few lines of code. +Using services such as [Let'sEncrypt](https://letsencrypt.org/), a certificate authority which provides __free__ SSL/TLS certificates, can help encrypt the communication of your applications. Node.js frameworks like [Express](http://expressjs.com/) (based on the core `https` module) support SSL/TLS, which can be implemented in a few lines of code. You can also configure SSL/TLS on a reverse proxy, such as [NGINX](http://nginx.org/en/docs/http/configuring_https_servers.html) or HAProxy. @@ -20,7 +20,7 @@ const app = express(); const options = { // The path should be changed accordingly to your setup cert: fs.readFileSync('./sslcert/fullchain.pem'), - key: fs.readFileSync('./sslcert/privkey.pem'), + key: fs.readFileSync('./sslcert/privkey.pem') }; https.createServer(options, app).listen(443); ```