fix invalid urls

pull/5821/head
Kamran Ahmed 6 months ago
parent dfef66f4b5
commit 1b79141b47
  1. 2
      src/data/roadmaps/backend/content/109-scaling-databases/102-sharding-strategies.md
  2. 2
      src/data/roadmaps/backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md
  3. 2
      src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/103-blockchain-forking.md
  4. 2
      src/data/roadmaps/computer-science/content/117-databases/114-views.md
  5. 2
      src/data/roadmaps/computer-science/content/117-databases/118-replication.md
  6. 49
      src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/100-salting.md
  7. 4
      src/data/roadmaps/devops/content/102-live-in-terminal/106-text-manipulation.md
  8. 2
      src/data/roadmaps/devops/content/103-networking-protocols/103-emails/100-white-grey-listing.md
  9. 44
      src/data/roadmaps/docker/content/104-data-persistence/index.md
  10. 2
      src/data/roadmaps/python/content/100-python-basics/index.md
  11. 2
      src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/100-inheritance.md
  12. 2
      src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/103-encapsulation.md
  13. 2
      src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md
  14. 2
      src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/105-blackboard-pattern.md
  15. 2
      src/data/roadmaps/system-design/content/111-databases/100-rdbms/101-sharding.md
  16. 2
      src/data/roadmaps/system-design/content/115-communication/101-tcp.md

@ -5,5 +5,5 @@ Sharding strategy is a technique to split a large dataset into smaller chunks (l
Visit the following resources to learn more: Visit the following resources to learn more:
- [Database Sharding – System Design Interview Concept](https://www.geeksforgeeks.org/database-sharding-a-system-design-concept/) - [Database Sharding – System Design Interview Concept](https://www.geeksforgeeks.org/database-sharding-a-system-design-concept/)
- [Wikipedia - Sharding in Database Architectures](<https://en.wikipedia.org/wiki/Shard_(database_architecture)>) - [Wikipedia - Sharding in Database Architectures](https://en.wikipedia.org/wiki/Shard_(database_architecture))
- [How sharding a database can make it faster](https://stackoverflow.blog/2022/03/14/how-sharding-a-database-can-make-it-faster/) - [How sharding a database can make it faster](https://stackoverflow.blog/2022/03/14/how-sharding-a-database-can-make-it-faster/)

@ -8,6 +8,6 @@ Telemetry is the process of continuously collecting data from different componen
Visit the following resources to learn more: Visit the following resources to learn more:
- [What is Instrumentation?](<https://en.wikipedia.org/wiki/Instrumentation_(computer_programming)>) - [What is Instrumentation?](https://en.wikipedia.org/wiki/Instrumentation_(computer_programming))
- [What is Monitoring?](https://www.yottaa.com/performance-monitoring-backend-vs-front-end-solutions/) - [What is Monitoring?](https://www.yottaa.com/performance-monitoring-backend-vs-front-end-solutions/)
- [What is Telemetry?](https://www.sumologic.com/insight/what-is-telemetry/) - [What is Telemetry?](https://www.sumologic.com/insight/what-is-telemetry/)

@ -4,6 +4,6 @@ A fork happens whenever a community makes a change to the blockchain’s protoco
Visit the following resources to learn more: Visit the following resources to learn more:
- [Blockchain Fork](<https://en.wikipedia.org/wiki/Fork_(blockchain)>) - [Blockchain Fork](https://en.wikipedia.org/wiki/Fork_(blockchain))
- [What is a fork?](https://www.coinbase.com/learn/crypto-basics/what-is-a-fork) - [What is a fork?](https://www.coinbase.com/learn/crypto-basics/what-is-a-fork)
- [What Is a Hard Fork?](https://www.investopedia.com/terms/h/hard-fork.asp) - [What Is a Hard Fork?](https://www.investopedia.com/terms/h/hard-fork.asp)

@ -6,4 +6,4 @@ Visit the following resources to learn more:
- [SQL | Views](https://www.geeksforgeeks.org/sql-views/) - [SQL | Views](https://www.geeksforgeeks.org/sql-views/)
- [Database Views](https://www.ibm.com/docs/en/eamfoc/7.6.0?topic=structure-views) - [Database Views](https://www.ibm.com/docs/en/eamfoc/7.6.0?topic=structure-views)
- [SQL Views - Wikipedia](<https://en.wikipedia.org/wiki/View_(SQL)>) - [SQL Views - Wikipedia](https://en.wikipedia.org/wiki/View_(SQL))

@ -5,4 +5,4 @@ Replication is a process that involves sharing information to ensure consistency
Visit the following resources to learn more: Visit the following resources to learn more:
- [Database Replication](https://dev.to/karanpratapsingh/system-design-the-complete-course-10fo#database-replication) - [Database Replication](https://dev.to/karanpratapsingh/system-design-the-complete-course-10fo#database-replication)
- [Replication (computing)](<https://en.wikipedia.org/wiki/Replication_(computing)>) - [Replication (computing)](https://en.wikipedia.org/wiki/Replication_(computing))

@ -1,52 +1,3 @@
# Salting # Salting
Salting is a crucial concept within the realm of cryptography. It is a technique employed to enhance the security of passwords or equivalent sensitive data by adding an extra layer of protection to safeguard them against hacking attempts, such as brute-force attacks or dictionary attacks. Salting is a crucial concept within the realm of cryptography. It is a technique employed to enhance the security of passwords or equivalent sensitive data by adding an extra layer of protection to safeguard them against hacking attempts, such as brute-force attacks or dictionary attacks.
In this section, we will dive deeper into the following topics:
- [What is salting?](#what-is-salting)
- [Why is salting important?](#why-is-salting-important)
- [How does salting work?](#how-does-salting-work)
- [Best practices for salting](#best-practices-for-salting)
---
## What is salting?
A _salt_ is a random string of data that is generated and combined with a user's password (or any other sensitive data) before hashing. The primary purpose of a salt is to make the hashed output of a password unique, even if two users use the exact same password. Since salts are typically randomly generated for each user, the likelihood of two users having the same salt is minimal.
## Why is salting important?
Salting is essential in enhancing password security for the following reasons:
- **Prevents the use of precomputed tables:** Attackers often use precomputed tables, such as rainbow tables or lookup tables, to efficiently crack password hashes. By introducing unique salts, these tables are rendered ineffective, as they do not account for the variations in the password hash resulting from the added salt.
- **Defends against dictionary attacks:** As salts create unique password hashes for identical passwords, attackers can no longer rely on simple dictionary attacks to crack multiple hashes simultaneously. They must instead attempt to crack each salted hash individually, which is significantly more time-consuming and resource-intensive.
## How does salting work?
When implementing salting, keep in mind the following steps:
- **Generation of a unique salt:** When a user creates or updates their password, a unique salt is generated using a cryptographically secure random number generator.
- **Combining the salt and password:** The generated salt is then combined with the user's password through concatenation or another similar method.
- **Hashing the salt and password:** The salted password is hashed using a secure hashing algorithm, producing a unique hash output.
- **Storing the salt and hashed password:** Both the salt and hashed password are stored securely in the database alongside the user's account information. The salt is required for verifying the password during future authentication attempts.
## Best practices for salting
These suggested best practices can maximize the effectiveness of salting:
- **Use a unique salt for each user:** Generating a distinct salt for every user ensures that identical passwords yield unique password hashes.
- **Employ a secure random number generator:** Using a cryptographically secure random number generator minimizes the likelihood of pattern repetition and enhances the robustness of salts.
- **Combine salts with a strong hashing algorithm:** Pairing salting with an established and secure hashing algorithm—such as bcrypt, scrypt, or Argon2—can significantly improve password security.
- **Consider peppering:** In addition to salting, consider incorporating a _pepper_—a secret key stored separately from the database—for extra security. Hashing a combination of the password, salt, and pepper can dramatically increase the difficulty of password hash cracking.
---
In summary, salting is a vital technique that enhances password security by adding a unique and random element to each password hash. This added layer of protection defends against precomputed tables and dictionary attacks, ensuring the security of user credentials in the face of persistent hacking efforts. Paired with best practices, salting can provide a robust defense against the ever-evolving threats in the cybersecurity landscape.

@ -36,7 +36,7 @@ The `grep` command (**g**lobal search for **r**egular **e**xpression and **p**ri
`sort` command is used to sort the contents of a file in a particular order. By default, it sorts a file assuming the contents are in ASCII. But it also can also be used to sort numerically by using appropriate options. `sort` command is used to sort the contents of a file in a particular order. By default, it sorts a file assuming the contents are in ASCII. But it also can also be used to sort numerically by using appropriate options.
- [Sort command with examples](https://www.geeksforgeeks.org/sort-command-linuxunix-examples/) - [Sort command with examples](https://www.geeksforgeeks.org/sort-command-linuxunix-examples/)
- [Options](<https://en.wikipedia.org/wiki/Sort_(Unix)>) - [Options](https://en.wikipedia.org/wiki/Sort_(Unix))
- [Linux Tutorials|sort command GeeksforGeeks](https://www.youtube.com/watch?v=fEx5rnbDKO4) - [Linux Tutorials|sort command GeeksforGeeks](https://www.youtube.com/watch?v=fEx5rnbDKO4)
The cut utility cuts out selected portions of each line (as specified by list) from each file and writes them to the standard output. The cut utility cuts out selected portions of each line (as specified by list) from each file and writes them to the standard output.
@ -52,7 +52,7 @@ The uniq utility reads the specified input_file comparing adjacent lines, and wr
`cat` (concatenate) command is very frequently used in Linux. It reads data from the file and gives its content as output. It helps us to create, view, and concatenate files. `cat` (concatenate) command is very frequently used in Linux. It reads data from the file and gives its content as output. It helps us to create, view, and concatenate files.
- [Cat Command with examples](https://www.tecmint.com/13-basic-cat-command-examples-in-linux/) - [Cat Command with examples](https://www.tecmint.com/13-basic-cat-command-examples-in-linux/)
- [Options](<https://en.wikipedia.org/wiki/Cat_(Unix)>) - [Options](https://en.wikipedia.org/wiki/Cat_(Unix))
- [Linux Tutorials|cat command|GeeksforGeeks](https://www.youtube.com/watch?v=exj5WMUJ11g) - [Linux Tutorials|cat command|GeeksforGeeks](https://www.youtube.com/watch?v=exj5WMUJ11g)
`echo` is a built-in command in Linux used to display lines of text/string that are passed as an argument. It is mostly used in shell scripts and batch files to output status text or `ENV` variables to the screen or a file. `echo` is a built-in command in Linux used to display lines of text/string that are passed as an argument. It is mostly used in shell scripts and batch files to output status text or `ENV` variables to the screen or a file.

@ -7,4 +7,4 @@ White listing is a process of adding an email to an approved sender list, so ema
Visit the following resources to learn more: Visit the following resources to learn more:
- [Basic Introduction to whitelisting](https://www.cblohm.com/blog/education-marketing-trends/what-is-email-whitelisting/) - [Basic Introduction to whitelisting](https://www.cblohm.com/blog/education-marketing-trends/what-is-email-whitelisting/)
- [Detailed Introduction to greylisting](<https://en.wikipedia.org/wiki/Greylisting_(email)>) - [Detailed Introduction to greylisting](https://en.wikipedia.org/wiki/Greylisting_(email))

@ -1,47 +1,3 @@
# Data Persistence in Docker # Data Persistence in Docker
Docker enables you to run containers that are isolated pieces of code, including applications and their dependencies, separated from the host operating system. Containers are ephemeral by default, which means any data stored in the container will be lost once it is terminated. To overcome this problem and retain data across container lifecycles, Docker provides various data persistence methods. Docker enables you to run containers that are isolated pieces of code, including applications and their dependencies, separated from the host operating system. Containers are ephemeral by default, which means any data stored in the container will be lost once it is terminated. To overcome this problem and retain data across container lifecycles, Docker provides various data persistence methods.
In this section, we will cover:
- [Docker Volumes](#docker-volumes)
- [Bind Mounts](#bind-mounts)
- [Docker tmpfs mounts](#docker-tmpfs-mounts)
### Docker Volumes
Docker volumes are the preferred way to persist data generated and utilized by a Docker container. A volume is a directory on the host machine Docker uses to store files and directories that can outlive the container's lifecycle. Docker volumes can be shared among containers, and they offer various benefits like easy backups and data migration.
To create a volume, use the following command:
```bash
docker volume create volume_name
```
To use a volume, add a `--volume` (or `-v`) flag to your `docker run` command:
```bash
docker run --volume volume_name:/container/path image_name
```
### Bind Mounts
Bind mounts allow you to map any directory on the host machine to a directory within the container. This method can be useful in development environments where you need to modify files on the host system, and those changes should be immediately available within the container.
To create a bind mount, use the `--mount` flag with `type=bind` in your `docker run` command:
```bash
docker run --mount type=bind,src=/host/path,dst=/container/path image_name
```
### Docker tmpfs mounts
Docker tmpfs mounts allow you to create a temporary file storage directly in the container's memory. Data stored in tmpfs mounts is fast and secure but will be lost once the container is terminated.
To use a tmpfs mount, add a `--tmpfs` flag to your `docker run` command:
```bash
docker run --tmpfs /container/path image_name
```
By employing these methods, you can ensure data persistence across container lifecycles, enhancing the usefulness and flexibility of Docker containers. Remember to choose the method that best suits your use case, whether it's the preferred Docker volumes, convenient bind mounts, or fast and secure tmpfs mounts.

@ -6,7 +6,7 @@ Visit the following resources to learn more:
- [Official Website: Python](https://www.python.org/) - [Official Website: Python](https://www.python.org/)
- [Tutorial Series: How to Code in Python](https://www.digitalocean.com/community/tutorials/how-to-write-your-first-python-3-program) - [Tutorial Series: How to Code in Python](https://www.digitalocean.com/community/tutorials/how-to-write-your-first-python-3-program)
- [Python Wikipedia](<https://en.wikipedia.org/wiki/Python_(programming_language)>) - [Python Wikipedia](https://en.wikipedia.org/wiki/Python_(programming_language))
- [Googles Python Class](https://developers.google.com/edu/python) - [Googles Python Class](https://developers.google.com/edu/python)
- [W3Schools - Python Tutorial](https://www.w3schools.com/python) - [W3Schools - Python Tutorial](https://www.w3schools.com/python)
- [Python](https://www.kaggle.com/learn/python) - [Python](https://www.kaggle.com/learn/python)

@ -5,4 +5,4 @@ Inheritance is a fundamental concept in object-oriented programming (OOP) that a
Learn more from the following links: Learn more from the following links:
- [What is inheritance in programming?](https://www.youtube.com/watch?v=ajOYOxCanhE) - [What is inheritance in programming?](https://www.youtube.com/watch?v=ajOYOxCanhE)
- [Overview of Inheritance (object-oriented programming)](<https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)>) - [Overview of Inheritance (object-oriented programming)](https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming))

@ -6,5 +6,5 @@ Encapsulation is achieved by using access modifiers (such as "public," "private,
Learn more from the following links: Learn more from the following links:
- [Overview of Encapsulation](<https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)>) - [Overview of Encapsulation](https://en.wikipedia.org/wiki/Encapsulation_(computer_programming))
- [Tutorial - What is encapsulation in programming?](https://www.youtube.com/watch?v=sNKKxc4QHqA) - [Tutorial - What is encapsulation in programming?](https://www.youtube.com/watch?v=sNKKxc4QHqA)

@ -7,4 +7,4 @@ Programming against abstractions allows for more flexibility in the code. When c
Learn more from the following resources: Learn more from the following resources:
- [What is Abstraction in Programming – And Why is it Useful?](https://www.freecodecamp.org/news/what-is-abstraction-in-programming/) - [What is Abstraction in Programming – And Why is it Useful?](https://www.freecodecamp.org/news/what-is-abstraction-in-programming/)
- [Overview of Abstraction principle](<https://en.wikipedia.org/wiki/Abstraction_principle_(computer_programming)>) - [Overview of Abstraction principle](https://en.wikipedia.org/wiki/Abstraction_principle_(computer_programming))

@ -4,5 +4,5 @@ The Blackboard architectural pattern is a software design pattern that allows fo
Learn more from the following links: Learn more from the following links:
- [Overview of Blackboard (design pattern)](<https://en.wikipedia.org/wiki/Blackboard_(design_pattern)>) - [Overview of Blackboard (design pattern)](https://en.wikipedia.org/wiki/Blackboard_(design_pattern))
- [Architectural Patterns: Blackboard](http://www.openloop.com/softwareEngineering/patterns/architecturePattern/arch_Blackboard.htm) - [Architectural Patterns: Blackboard](http://www.openloop.com/softwareEngineering/patterns/architecturePattern/arch_Blackboard.htm)

@ -7,4 +7,4 @@ Similar to the advantages of federation, sharding results in less read and write
Learn more from the following links: Learn more from the following links:
- [The coming of the Shard](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html) - [The coming of the Shard](http://highscalability.com/blog/2009/8/6/an-unorthodox-approach-to-database-design-the-coming-of-the.html)
- [Shard (database architecture)](<https://en.wikipedia.org/wiki/Shard_(database_architecture)>) - [Shard (database architecture)](https://en.wikipedia.org/wiki/Shard_(database_architecture))

@ -3,7 +3,7 @@
TCP is a connection-oriented protocol over an [IP network](https://en.wikipedia.org/wiki/Internet_Protocol). Connection is established and terminated using a [handshake](https://en.wikipedia.org/wiki/Handshaking). All packets sent are guaranteed to reach the destination in the original order and without corruption through: TCP is a connection-oriented protocol over an [IP network](https://en.wikipedia.org/wiki/Internet_Protocol). Connection is established and terminated using a [handshake](https://en.wikipedia.org/wiki/Handshaking). All packets sent are guaranteed to reach the destination in the original order and without corruption through:
- Sequence numbers and [checksum fields](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Checksum_computation) for each packet - Sequence numbers and [checksum fields](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Checksum_computation) for each packet
- [Acknowledgement](<https://en.wikipedia.org/wiki/Acknowledgement_(data_networks)>) packets and automatic retransmission - [Acknowledgement](https://en.wikipedia.org/wiki/Acknowledgement_(data_networks)) packets and automatic retransmission
If the sender does not receive a correct response, it will resend the packets. If there are multiple timeouts, the connection is dropped. TCP also implements [flow control](<https://en.wikipedia.org/wiki/Flow_control_(data)>) and congestion control. These guarantees cause delays and generally result in less efficient transmission than UDP. If the sender does not receive a correct response, it will resend the packets. If there are multiple timeouts, the connection is dropped. TCP also implements [flow control](<https://en.wikipedia.org/wiki/Flow_control_(data)>) and congestion control. These guarantees cause delays and generally result in less efficient transmission than UDP.

Loading…
Cancel
Save