fix minor typos (#3974)

* 📝 fix : typos

* Update 101-anti-corruption-layer.md

---------

Co-authored-by: Arik Chakma <arikchangma@gmail.com>
pull/3988/head
유성현 1 year ago committed by GitHub
parent fbdb7e77c3
commit 1414693e33
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      src/data/best-practices/api-security/content/disable-entity-parsing-xml.md
  2. 2
      src/data/best-practices/aws/content/alerts-as-notifications.md
  3. 2
      src/data/best-practices/aws/content/app-changes-for-aws.md
  4. 2
      src/data/best-practices/aws/content/avoid-server-eips.md
  5. 2
      src/data/best-practices/aws/content/billing-alerts.md
  6. 2
      src/data/best-practices/aws/content/scale-down-events.md
  7. 2
      src/data/best-practices/aws/content/use-official-sdks.md
  8. 2
      src/data/best-practices/aws/content/use-vpc.md
  9. 2
      src/data/best-practices/frontend-performance/content/minify-css.md
  10. 2
      src/data/guides/consistency-patterns-in-distributed-systems.md
  11. 2
      src/data/roadmaps/angular/content/105-rendering-topics/101-builtin-pipes.md
  12. 2
      src/data/roadmaps/angular/content/106-forms/index.md
  13. 2
      src/data/roadmaps/backend/content/123-scalability/104-observability.md
  14. 2
      src/data/roadmaps/computer-science/content/104-common-algorithms/100-sorting-algorithms/104-quick-sort.md
  15. 2
      src/data/roadmaps/devops/content/102-managing-servers/101-live-in-terminal/128-fmt.md
  16. 2
      src/data/roadmaps/docker/content/111-developer-experience/103-continuous-integration.md
  17. 2
      src/data/roadmaps/golang/content/109-go-microservices/101-rpcx.md
  18. 2
      src/data/roadmaps/golang/content/109-go-microservices/103-micro.md
  19. 2
      src/data/roadmaps/javascript/content/103-javascript-type-casting/102-implicit-type-casting.md
  20. 2
      src/data/roadmaps/nodejs/content/103-nodejs-error-handling/103-error-types/100-javascript-errors.md
  21. 2
      src/data/roadmaps/nodejs/content/107-nodejs-apis/100-http-module.md
  22. 2
      src/data/roadmaps/nodejs/content/107-nodejs-apis/109-passport-js.md
  23. 2
      src/data/roadmaps/nodejs/content/117-nodejs-common-modules/100-builtin-modules.md
  24. 2
      src/data/roadmaps/prompt-engineering/content/103-real-world/103-coding-assistance.md
  25. 2
      src/data/roadmaps/qa/content/103-qa-automated-testing/100-frontend-automation/102-automation-frameworks/jest.md
  26. 4
      src/data/roadmaps/qa/content/104-qa-non-functional-testing/101-accessibility-testing/100-chrome-devtools.md
  27. 2
      src/data/roadmaps/software-design-architecture/content/104-design-patterns/101-posa-patterns.md
  28. 2
      src/data/roadmaps/spring-boot/content/103-autconfiguration.md
  29. 2
      src/data/roadmaps/spring-boot/content/106-hibernate/101-relationships.md
  30. 4
      src/data/roadmaps/system-design/content/118-cloud-design-patterns/102-design-and-implementation/101-anti-corruption-layer.md

@ -1,4 +1,4 @@
# Disable Entinty Parsing in XML
# Disable Entity Parsing in XML
> Disable entity parsing if you are parsing XML to avoid XXE attacks

@ -2,4 +2,4 @@
> Get your alerts to become notifications.
If you've set everyting up correctly, your health checks should automatically destroy bad instances and spawn new ones. There's usually no action to take when getting a CloudWatch alert, as everything should be automated. If you're getting alerts where manual intervention is required, do a post-mortem and figure out if there's a way you can automate the action in future. The last time I had an actionable alert from CloudWatch was about a year ago, and it's extremely awesome not to be woken up at 4am for ops alerts any more.
If you've set everything up correctly, your health checks should automatically destroy bad instances and spawn new ones. There's usually no action to take when getting a CloudWatch alert, as everything should be automated. If you're getting alerts where manual intervention is required, do a post-mortem and figure out if there's a way you can automate the action in future. The last time I had an actionable alert from CloudWatch was about a year ago, and it's extremely awesome not to be woken up at 4am for ops alerts any more.

@ -1,3 +1,3 @@
# App Changes for AWS
While a lot of applications can probably just be deployed to an EC2 instance and work well, if you're coming from a physical environment, you may need to re-architect your application in order to accomodate changes. Don't just think you can copy the files over and be done with it.
While a lot of applications can probably just be deployed to an EC2 instance and work well, if you're coming from a physical environment, you may need to re-architect your application in order to accommodate changes. Don't just think you can copy the files over and be done with it.

@ -2,4 +2,4 @@
> Don't give servers static/elastic IPs.
For a typical web application, you should put things behind a load balancer, and balance them between AZs. There are a few cases where Elastic IPs will probably need to be used, but in order to make best use of auto-scaling you'll want to use a load balancer instad of giving every instance their own unique IP.
For a typical web application, you should put things behind a load balancer, and balance them between AZs. There are a few cases where Elastic IPs will probably need to be used, but in order to make best use of auto-scaling you'll want to use a load balancer instead of giving every instance their own unique IP.

@ -2,4 +2,4 @@
> Set up granular billing alerts.
You should always have at least one billing alert set up, but that will only tell you on a monthly basis once you've exceeded your allowance. If you want to catch runaway billing early, you need a more fine grained approach. The way I do it is to set up an alert for my expected usage each week. So the first week's alert for say $1,000, the second for $2,000, third for $3,000, etc. If the week-2 alarm goes off before the 14th/15th of the month, then I know something is probably going wrong. For even more fine-grained control, you can set this up for each individual service, that way you instantly know which service is causing the problem. This could be useful if your usage on one service is quite steady month-to-month, but another is more erratic. Have the indidividual weekly alerts for the steady one, but just an overall one for the more erratic one. If everything is steady, then this is probably overkill, as looking at CloudWatch will quickly tell you which service is the one causing the problem.
You should always have at least one billing alert set up, but that will only tell you on a monthly basis once you've exceeded your allowance. If you want to catch runaway billing early, you need a more fine grained approach. The way I do it is to set up an alert for my expected usage each week. So the first week's alert for say $1,000, the second for $2,000, third for $3,000, etc. If the week-2 alarm goes off before the 14th/15th of the month, then I know something is probably going wrong. For even more fine-grained control, you can set this up for each individual service, that way you instantly know which service is causing the problem. This could be useful if your usage on one service is quite steady month-to-month, but another is more erratic. Have the individual weekly alerts for the steady one, but just an overall one for the more erratic one. If everything is steady, then this is probably overkill, as looking at CloudWatch will quickly tell you which service is the one causing the problem.

@ -2,4 +2,4 @@
> Scale down on INSUFFICIENT_DATA as well as ALARM.
For your scale-down action, make sure to trigger a scale-down event when there's no metric data, as well as when your trigger goes off. For example, if you have an app which usually has very low traffic, but experiences occasional spikes, you want to be sure that it scales down once the spike is over and the traffic stops. If there's no traffic, you'll get `INSUFFIFIENT_DATA` instead of `ALARM` for your low traffic threshold and it won't trigger a scale-down action.
For your scale-down action, make sure to trigger a scale-down event when there's no metric data, as well as when your trigger goes off. For example, if you have an app which usually has very low traffic, but experiences occasional spikes, you want to be sure that it scales down once the spike is over and the traffic stops. If there's no traffic, you'll get `INSUFFICIENT_DATA` instead of `ALARM` for your low traffic threshold and it won't trigger a scale-down action.

@ -1,5 +1,5 @@
# Use Official SDKs
> If you need to interact with AWS, use the SDK for your langauge.
> If you need to interact with AWS, use the SDK for your language.
Don't try to roll your own, I did this at first as I only needed a simple upload to S3, but then you add more services and it's just an all around bad idea. [The AWS SDKs](http://aws.amazon.com/tools/) are well written, handle authentication automatically, handle retry logic, and they're maintained and iterated on by Amazon. Also, if you use EC2 IAM roles (which you absolutely should, more on this later) then the SDK will automatically grab the correct credentials for you.

@ -1,5 +1,5 @@
# Use VPC
Setting up a VPC seems like a pain at first, but once you get stuck in and play with it, it's suprising easy to set up and get going. It provides all sorts of extra features over EC2 that are well worth the extra time it takes to set up a VPC. First, you can control traffic at the network level using ACLs, you can modify instance size, security groups, etc. without needing to terminate an instance. You can specify egress firewall rules (you cannot control outbound traffic from normal EC2). But the biggest thing is that you have your own private subnet where your instances are completely cut off from everyone else, so it adds an extra layer of protection.
Setting up a VPC seems like a pain at first, but once you get stuck in and play with it, it's surprising easy to set up and get going. It provides all sorts of extra features over EC2 that are well worth the extra time it takes to set up a VPC. First, you can control traffic at the network level using ACLs, you can modify instance size, security groups, etc. without needing to terminate an instance. You can specify egress firewall rules (you cannot control outbound traffic from normal EC2). But the biggest thing is that you have your own private subnet where your instances are completely cut off from everyone else, so it adds an extra layer of protection.
If you're interested in the internals of VPC, I highly recommend watching [A Day in the Life of Billion Packets](http://www.youtube.com/watch?v=Zd5hsL-JNY4) ([Slides](https://www.slideshare.net/AmazonWebServices/a-day-in-the-life-of-a-billion-packets-cpn401-aws-reinvent-2013)).

@ -7,6 +7,6 @@ When CSS files are minified, the content is loaded faster and less data is sent
Use tools to minify your files automatically before or during your build or your deployment.
- [cssnano: A modular minifier based on the PostCSS ecosystem. - cssnano](https://cssnano.co/)
- [CSS Minfier](https://goonlinetools.com/css-minifier/)
- [CSS Minifier](https://goonlinetools.com/css-minifier/)
- [@neutrinojs/style-minify - npm](https://www.npmjs.com/package/@neutrinojs/style-minify)
- [Online CSS Compressor](http://refresh-sf.com)

@ -61,7 +61,7 @@ An example of strong consistency is a financial system where users can transfer
In a weakly consistent system, updates to the data may not be immediately propagated. This can lead to inconsistencies and conflicts between different versions of the data, but it also allows for **high availability and low latency**.
Another example of weak consistency is a gaming platform where users can play online multiplayer games. When a user plays a game, their actions are immediately visible to other players in the same data center, but if there was a lag or temporary connectoin loss, the actions may not be seen by some of the users and the game will continue. This can lead to inconsistencies between different versions of the game state, but it also allows for a high level of availability and low latency.
Another example of weak consistency is a gaming platform where users can play online multiplayer games. When a user plays a game, their actions are immediately visible to other players in the same data center, but if there was a lag or temporary connection loss, the actions may not be seen by some of the users and the game will continue. This can lead to inconsistencies between different versions of the game state, but it also allows for a high level of availability and low latency.
### Eventual Consistency

@ -7,4 +7,4 @@ Use pipes to transform strings, currency amounts, dates, and other data for disp
Visit the following resources to learn more:
- [Understanding BuiltIn Pipes](https://angular.io/guide/pipes)
- [BuiltIn Pipes - exampls](https://codecraft.tv/courses/angular/pipes/built-in-pipes/)
- [BuiltIn Pipes - examples](https://codecraft.tv/courses/angular/pipes/built-in-pipes/)

@ -2,7 +2,7 @@
Forms are used to handle user inputs in many applications. It enables users from entering sensitive information to performing several data entry tasks.
Angular provides two approachs to handle user inputs trough forms: reactive and template-driven forms.
Angular provides two approaches to handle user inputs trough forms: reactive and template-driven forms.
Visit the following resources to learn more:

@ -1,6 +1,6 @@
# Observability
In sofware development, observability is the measure of how well we can understand a system from the work it does, and how to make it better.
In software development, observability is the measure of how well we can understand a system from the work it does, and how to make it better.
So what makes a system to be "observable"? It is its ability of producing and collecting metrics, logs and traces in order for us to understand what happens under the hood and identify issues and bottlenecks faster.

@ -7,5 +7,5 @@ Visit the following resources to learn more:
- [Quick Sort Algorithm](https://www.programiz.com/dsa/quick-sort)
- [Quick Sort Algorithm - Geeks for Geeks](https://www.geeksforgeeks.org/quick-sort/)
- [Quick Sort in 4 Minutes](https://www.youtube.com/watch?v=Hoixgm4-P4M&feature=youtu.be)
- [Quick Sort Implementaiton in C](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c)
- [Quick Sort Implementation in C](http://www.cs.yale.edu/homes/aspnes/classes/223/examples/randomization/quick.c)
- [Quick Sort Implementation in Python](https://github.com/jwasham/practice-python/blob/master/quick_sort/quick_sort.py)

@ -1,6 +1,6 @@
# fmt
`fmt` command is for formatting and optimizing contents in text files. It will be really usefull when it comes to beautify large text files by setting uniform column width and spaces.
`fmt` command is for formatting and optimizing contents in text files. It will be really useful when it comes to beautify large text files by setting uniform column width and spaces.
It has the following syntax: `$ fmt [-width] [option] [file]` e.g. `$ fmt file.txt`

@ -5,7 +5,7 @@ Continuous integration is the idea of executing some actions (for example build,
For containers, there are a number of things we may want to do:
- Build the container images
- Eecute tests
- Execute tests
- Scan container images for vulnerabilities
- Tag images with useful metadata
- Push to a container registry

@ -2,7 +2,7 @@
Rpcx is a RPC (Remote Procedure Call) framework like Alibaba Dubbo and Weibo Motan. Some of the advantages on using Rpcx:
- Simple: easy to learn, easy to develop, easy to intergate and easy to deploy
- Simple: easy to learn, easy to develop, easy to integrate and easy to deploy
- Performance: high performance (>= grpc-go)
- Cross-platform: support raw slice of bytes, JSON, Protobuf and MessagePack. Theoretically it can be used with java, php, python, c/c++, node.js, c# and other platforms
- Service discovery and service governance: support zookeeper, etcd and consul.

@ -4,5 +4,5 @@ It is an API first development platform. It leverages the microservices architec
Visit the following resources to learn more:
- [Offical Website](https://micro.dev/)
- [Official Website](https://micro.dev/)
- [Micro Github](https://github.com/micro/micro)

@ -4,7 +4,7 @@ Implicit type conversion happens when the compiler or runtime automatically conv
Visit the following resources to learn more:
- [GeeeksForGeeks - JavaScript Tutorials](https://www.geeksforgeeks.org/javascript-type-conversion/)
- [GeeksForGeeks - JavaScript Tutorials](https://www.geeksforgeeks.org/javascript-type-conversion/)
- [W3Schools - JavaScript Tutorials](https://www.w3schools.com/js/js_type_conversion.asp)
- [TutorialsPoint - JavaScript Tutorials](https://www.tutorialspoint.com/explain-typecasting-in-javascript)
- [What you need to know about Javascripts Implicit Coercion](https://dev.to/promisetochi/what-you-need-to-know-about-javascripts-implicit-coercion-e23)

@ -1,6 +1,6 @@
# Javascript Errors
JavaScript Errors are used by JavaScript to inform developers about various issue in the script being executed. These issues can be syntax error where the developer/programmer has used the worng syntax, it can be due to some wrong user input or some other problem.
JavaScript Errors are used by JavaScript to inform developers about various issue in the script being executed. These issues can be syntax error where the developer/programmer has used the wrong syntax, it can be due to some wrong user input or some other problem.
JavaScript has six types of errors that may occur during the execution of the script:

@ -4,6 +4,6 @@ To make HTTP requests in Node.js, there is a built-in module HTTP in Node.js to
Visit the following resources to learn more:
- [How To Create a Web Server in Node.js with the HTTP Modulet](https://www.digitalocean.com/community/tutorials/how-to-create-a-web-server-in-node-js-with-the-http-module)
- [How To Create a Web Server in Node.js with the HTTP Module](https://www.digitalocean.com/community/tutorials/how-to-create-a-web-server-in-node-js-with-the-http-module)
- [Node.js Http Module](https://www.geeksforgeeks.org/node-js-http-module/)
- [The Node.js Http Module](https://nodejs.dev/en/learn/the-nodejs-http-module/)

@ -6,4 +6,4 @@ Visit the following resources to learn more:
- [PassportJS Website](https://www.passportjs.org/)
- [PassportJS Official Documentation](https://www.passportjs.org/docs/)
- [Implemetaion of OAuth using passportjs](https://www.youtube.com/watch?v=sakQbeRjgwg&list=PL4cUxeGkcC9jdm7QX143aMLAqyM-jTZ2x)
- [Implementation of OAuth using passportjs](https://www.youtube.com/watch?v=sakQbeRjgwg&list=PL4cUxeGkcC9jdm7QX143aMLAqyM-jTZ2x)

@ -17,7 +17,7 @@ Built-in modules are already installed with `Node.js`, so you don't need to inst
- **crypto**: to handle OpenSSL cryptographic functions.
- **Buffer**: provides APIs to handling streams of binary data.
- **DNS**: enables name resolution.
- **events**: for handling existing events and creating custon events.
- **events**: for handling existing events and creating custom events.
- **child_processes**: provides the ability to spawn subprocesses.
- **REPL**: provides a Read-Eval-Print-Loop (REPL) implementation that is available both as a standalone program or includible in other applications.
- **readline**: provides an interface for reading data from a Readable stream one line at a time.

@ -151,4 +151,4 @@ print("Social Security tax is: $", round(ss_tax, 2))
Learn more from the following resources:
- [LLM Coding Assitance](https://learnprompting.org/docs/basic_applications/coding_assistance)
- [LLM Coding Assistance](https://learnprompting.org/docs/basic_applications/coding_assistance)

@ -6,5 +6,5 @@ It works with projects using: Babel, TypeScript, Node, React, Angular, Vue and m
Visit the following resources to learn more:
- [Official Website](https://jestjs.io/)
- [Official Documentaion](https://jestjs.io/docs/getting-started)
- [Official Documentation](https://jestjs.io/docs/getting-started)
- [Jest Crash Course - Unit Testing in JavaScript](https://www.youtube.com/watch?v=7r4xVDI2vho)

@ -1,8 +1,8 @@
# Chrome dev tools
These are a set of tools built into the browser to aid frontend developers diagnose and solve various issues in their applications — such as JavaScript and logical bugs, CSS styling issues or even just making quick temprary alterations to the DOM.
These are a set of tools built into the browser to aid frontend developers diagnose and solve various issues in their applications — such as JavaScript and logical bugs, CSS styling issues or even just making quick temporary alterations to the DOM.
To enter the dev tools, right click and click **Inspect** (or press `ctrl+shift+c`/`cmd+opt+c`) to enter the Elements panel. Here you can debug CSS and HTML issues. If you want to see logged messages or interact with javascript, enter the **Console** tab from the tabs above (or press `ctrl+shift+j`/`cmd+opt+j` to enter it directly). Another very useful feature in the Chrome dev tools is the Lighthouse (for checking perfomance) — more on this later.
To enter the dev tools, right click and click **Inspect** (or press `ctrl+shift+c`/`cmd+opt+c`) to enter the Elements panel. Here you can debug CSS and HTML issues. If you want to see logged messages or interact with javascript, enter the **Console** tab from the tabs above (or press `ctrl+shift+j`/`cmd+opt+j` to enter it directly). Another very useful feature in the Chrome dev tools is the Lighthouse (for checking performance) — more on this later.
NOTE: This isn't a chrome-specific feature, and most browsers (Chromium based or otherwise) will have their own, largely-similar set of devtools.

@ -1,6 +1,6 @@
# POSA Patterns
POSA (Patterns of Scaleable and Adaptable Software Architecture) is a set of design patterns for developing software systems that can scale and adapt to changing requirements. These patterns were first described in the book "Patterns of Scalable, Reliable Services" by Kevin Hoffman.
POSA (Patterns of Scalable and Adaptable Software Architecture) is a set of design patterns for developing software systems that can scale and adapt to changing requirements. These patterns were first described in the book "Patterns of Scalable, Reliable Services" by Kevin Hoffman.
POSA patterns are divided into four categories:

@ -1,4 +1,4 @@
# Autconfiguration
# Autoconfiguration
Spring Boot's Autoconfiguration is a powerful and convenient feature that makes it easy to configure beans and other components in your application based on the presence of certain dependencies and properties. It saves developer's time by reducing the need for boilerplate configuration code, and can be fine-tuned through properties and annotations, to provide a fine-grained control over the auto-configurations.

@ -2,7 +2,7 @@
Using hibernate, if we want to have relationship between two entities, there must exist a foreign key relationship between the tables, we call it as Referential integrity. The main advantage of having relationship between objects is, we can do operation on one object, and the same operation can transfer onto the other object in the database.
Here are the four tyeps of relationships we can have between objects in Hibernate.
Here are the four types of relationships we can have between objects in Hibernate.
- One-To-One
- Many-To-One

@ -1,6 +1,6 @@
# Anti-orruption Layer
# Anti-corruption Layer
Implement a façade or adapter layer between different subsystems that don't share the same semantics. This layer translates requests that one subsystem makes to the other subsystem. Use this pattern to ensure that an application's design is not limited by dependencies on outside subsystems. This pattern was first described by Eric Evans in Domain-Driven Design.
Implement a facade or adapter layer between different subsystems that don't share the same semantics. This layer translates requests that one subsystem makes to the other subsystem. Use this pattern to ensure that an application's design is not limited by dependencies on outside subsystems. This pattern was first described by Eric Evans in Domain-Driven Design.
To learn more, visit the following links:

Loading…
Cancel
Save