From 1b79141b47ec3db055fc18a9ed3e4a36bb095a15 Mon Sep 17 00:00:00 2001 From: Kamran Ahmed Date: Thu, 6 Jun 2024 23:05:23 +0100 Subject: [PATCH] fix invalid urls --- .../102-sharding-strategies.md | 2 +- ...01-instrumentation-monitoring-telemetry.md | 2 +- .../103-blockchain-forking.md | 2 +- .../content/117-databases/114-views.md | 2 +- .../content/117-databases/118-replication.md | 2 +- .../100-cryptography/100-salting.md | 49 ------------------- .../106-text-manipulation.md | 4 +- .../103-emails/100-white-grey-listing.md | 2 +- .../content/104-data-persistence/index.md | 46 +---------------- .../python/content/100-python-basics/index.md | 2 +- .../100-primary-principles/100-inheritance.md | 2 +- .../103-encapsulation.md | 2 +- .../102-program-against-abstractions.md | 2 +- .../105-blackboard-pattern.md | 2 +- .../111-databases/100-rdbms/101-sharding.md | 2 +- .../content/115-communication/101-tcp.md | 2 +- 16 files changed, 16 insertions(+), 109 deletions(-) diff --git a/src/data/roadmaps/backend/content/109-scaling-databases/102-sharding-strategies.md b/src/data/roadmaps/backend/content/109-scaling-databases/102-sharding-strategies.md index 1bee61f4e..ec8bd1b91 100644 --- a/src/data/roadmaps/backend/content/109-scaling-databases/102-sharding-strategies.md +++ b/src/data/roadmaps/backend/content/109-scaling-databases/102-sharding-strategies.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: - [Database Sharding – System Design Interview Concept](https://www.geeksforgeeks.org/database-sharding-a-system-design-concept/) -- [Wikipedia - Sharding in Database Architectures]() +- [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/) diff --git a/src/data/roadmaps/backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md b/src/data/roadmaps/backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md index a8ee160bf..21cef3fe2 100644 --- a/src/data/roadmaps/backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md +++ b/src/data/roadmaps/backend/content/123-scalability/101-instrumentation-monitoring-telemetry.md @@ -8,6 +8,6 @@ Telemetry is the process of continuously collecting data from different componen Visit the following resources to learn more: -- [What is Instrumentation?]() +- [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 Telemetry?](https://www.sumologic.com/insight/what-is-telemetry/) diff --git a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/103-blockchain-forking.md b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/103-blockchain-forking.md index 5e250a35b..53d6a9946 100644 --- a/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/103-blockchain-forking.md +++ b/src/data/roadmaps/blockchain/content/101-blockchain-general-knowledge/103-blockchain-forking.md @@ -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: -- [Blockchain Fork]() +- [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 Hard Fork?](https://www.investopedia.com/terms/h/hard-fork.asp) diff --git a/src/data/roadmaps/computer-science/content/117-databases/114-views.md b/src/data/roadmaps/computer-science/content/117-databases/114-views.md index 4492f1432..ca67498b9 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/114-views.md +++ b/src/data/roadmaps/computer-science/content/117-databases/114-views.md @@ -6,4 +6,4 @@ Visit the following resources to learn more: - [SQL | Views](https://www.geeksforgeeks.org/sql-views/) - [Database Views](https://www.ibm.com/docs/en/eamfoc/7.6.0?topic=structure-views) -- [SQL Views - Wikipedia]() +- [SQL Views - Wikipedia](https://en.wikipedia.org/wiki/View_(SQL)) diff --git a/src/data/roadmaps/computer-science/content/117-databases/118-replication.md b/src/data/roadmaps/computer-science/content/117-databases/118-replication.md index 39c4813ab..fb10b2296 100644 --- a/src/data/roadmaps/computer-science/content/117-databases/118-replication.md +++ b/src/data/roadmaps/computer-science/content/117-databases/118-replication.md @@ -5,4 +5,4 @@ Replication is a process that involves sharing information to ensure consistency Visit the following resources to learn more: - [Database Replication](https://dev.to/karanpratapsingh/system-design-the-complete-course-10fo#database-replication) -- [Replication (computing)]() +- [Replication (computing)](https://en.wikipedia.org/wiki/Replication_(computing)) diff --git a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/100-salting.md b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/100-salting.md index 2885a78a8..9113e1bd9 100644 --- a/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/100-salting.md +++ b/src/data/roadmaps/cyber-security/content/103-security-skills-and-knowledge/100-cryptography/100-salting.md @@ -1,52 +1,3 @@ # 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. - -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. diff --git a/src/data/roadmaps/devops/content/102-live-in-terminal/106-text-manipulation.md b/src/data/roadmaps/devops/content/102-live-in-terminal/106-text-manipulation.md index 7137f8d46..b56570036 100644 --- a/src/data/roadmaps/devops/content/102-live-in-terminal/106-text-manipulation.md +++ b/src/data/roadmaps/devops/content/102-live-in-terminal/106-text-manipulation.md @@ -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 with examples](https://www.geeksforgeeks.org/sort-command-linuxunix-examples/) -- [Options]() +- [Options](https://en.wikipedia.org/wiki/Sort_(Unix)) - [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. @@ -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 Command with examples](https://www.tecmint.com/13-basic-cat-command-examples-in-linux/) -- [Options]() +- [Options](https://en.wikipedia.org/wiki/Cat_(Unix)) - [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. diff --git a/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/100-white-grey-listing.md b/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/100-white-grey-listing.md index b2f7580e4..65e23a86d 100644 --- a/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/100-white-grey-listing.md +++ b/src/data/roadmaps/devops/content/103-networking-protocols/103-emails/100-white-grey-listing.md @@ -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: - [Basic Introduction to whitelisting](https://www.cblohm.com/blog/education-marketing-trends/what-is-email-whitelisting/) -- [Detailed Introduction to greylisting]() +- [Detailed Introduction to greylisting](https://en.wikipedia.org/wiki/Greylisting_(email)) diff --git a/src/data/roadmaps/docker/content/104-data-persistence/index.md b/src/data/roadmaps/docker/content/104-data-persistence/index.md index 2b9e3e58b..e181f5e38 100644 --- a/src/data/roadmaps/docker/content/104-data-persistence/index.md +++ b/src/data/roadmaps/docker/content/104-data-persistence/index.md @@ -1,47 +1,3 @@ # 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. - -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. \ No newline at end of file +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. \ No newline at end of file diff --git a/src/data/roadmaps/python/content/100-python-basics/index.md b/src/data/roadmaps/python/content/100-python-basics/index.md index 6fb142a64..8f7ee2571 100644 --- a/src/data/roadmaps/python/content/100-python-basics/index.md +++ b/src/data/roadmaps/python/content/100-python-basics/index.md @@ -6,7 +6,7 @@ Visit the following resources to learn more: - [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) -- [Python Wikipedia]() +- [Python Wikipedia](https://en.wikipedia.org/wiki/Python_(programming_language)) - [Googles Python Class](https://developers.google.com/edu/python) - [W3Schools - Python Tutorial](https://www.w3schools.com/python) - [Python](https://www.kaggle.com/learn/python) \ No newline at end of file diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/100-inheritance.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/100-inheritance.md index 2933f975e..db5def1a9 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/100-inheritance.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/100-inheritance.md @@ -5,4 +5,4 @@ Inheritance is a fundamental concept in object-oriented programming (OOP) that a Learn more from the following links: - [What is inheritance in programming?](https://www.youtube.com/watch?v=ajOYOxCanhE) -- [Overview of Inheritance (object-oriented programming)]() +- [Overview of Inheritance (object-oriented programming)](https://en.wikipedia.org/wiki/Inheritance_(object-oriented_programming)) diff --git a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/103-encapsulation.md b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/103-encapsulation.md index 3d8004876..cc0c795f6 100644 --- a/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/103-encapsulation.md +++ b/src/data/roadmaps/software-design-architecture/content/102-object-oriented-programming/100-primary-principles/103-encapsulation.md @@ -6,5 +6,5 @@ Encapsulation is achieved by using access modifiers (such as "public," "private, Learn more from the following links: -- [Overview of Encapsulation]() +- [Overview of Encapsulation](https://en.wikipedia.org/wiki/Encapsulation_(computer_programming)) - [Tutorial - What is encapsulation in programming?](https://www.youtube.com/watch?v=sNKKxc4QHqA) diff --git a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md index fc499d50e..6363892b8 100644 --- a/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md +++ b/src/data/roadmaps/software-design-architecture/content/103-software-design-principles/102-program-against-abstractions.md @@ -7,4 +7,4 @@ Programming against abstractions allows for more flexibility in the code. When c 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/) -- [Overview of Abstraction principle]() +- [Overview of Abstraction principle](https://en.wikipedia.org/wiki/Abstraction_principle_(computer_programming)) diff --git a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/105-blackboard-pattern.md b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/105-blackboard-pattern.md index 6d2f9ae3b..38e9a69fb 100644 --- a/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/105-blackboard-pattern.md +++ b/src/data/roadmaps/software-design-architecture/content/107-architectural-patterns/105-blackboard-pattern.md @@ -4,5 +4,5 @@ The Blackboard architectural pattern is a software design pattern that allows fo Learn more from the following links: -- [Overview of 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) diff --git a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/101-sharding.md b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/101-sharding.md index cea52a3db..b1d266201 100644 --- a/src/data/roadmaps/system-design/content/111-databases/100-rdbms/101-sharding.md +++ b/src/data/roadmaps/system-design/content/111-databases/100-rdbms/101-sharding.md @@ -7,4 +7,4 @@ Similar to the advantages of federation, sharding results in less read and write 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) -- [Shard (database architecture)]() +- [Shard (database architecture)](https://en.wikipedia.org/wiki/Shard_(database_architecture)) diff --git a/src/data/roadmaps/system-design/content/115-communication/101-tcp.md b/src/data/roadmaps/system-design/content/115-communication/101-tcp.md index 0c637d7a6..49d3ae0bc 100644 --- a/src/data/roadmaps/system-design/content/115-communication/101-tcp.md +++ b/src/data/roadmaps/system-design/content/115-communication/101-tcp.md @@ -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: - Sequence numbers and [checksum fields](https://en.wikipedia.org/wiki/Transmission_Control_Protocol#Checksum_computation) for each packet -- [Acknowledgement]() 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]() and congestion control. These guarantees cause delays and generally result in less efficient transmission than UDP.