diff --git a/README.md b/README.md index 005bed0..ada2948 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ This repository is a visual cheatsheet on the main topics in Backend-development > 🤝 If you want to help the project, feel free to send your [issues](https://github.com/cheatsnake/backend-cheats/issues) or [pull requests](https://github.com/cheatsnake/backend-cheats/pulls). -> 🌙 For better experiense enable [dark theme](https://github.com/settings/appearance). +> 🌙 For better experience enable [dark theme](https://github.com/settings/appearance).
@@ -45,7 +45,7 @@ This repository is a visual cheatsheet on the main topics in Backend-development * [Working with shell](#working-with-shell) * [Package manager](#package-manager) * [Bash scripts](#bash-scripts) - * [Users, groups and permissions](#users-groups-and-permissions) + * [Users, groups, and permissions](#users-groups-and-permissions) * [Working with processes](#working-with-processes) * [Working with SSH](#working-with-ssh) * [Network utils](#network-utils) @@ -161,7 +161,7 @@ This repository is a visual cheatsheet on the main topics in Backend-development 1. 📄 [**How does the Internet work?** – MDN](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/How_does_the_Internet_work) 2. 📺 [**How does the internet work? (Full Course)** – YouTube](https://youtu.be/zN8YNNHcaZc) -3. 📺 [**What is a Server? Servers vs Desktops Explained** – YouTube](https://youtu.be/UjCDWCeHCzY) +3. 📺 [**What is a Server? Servers vs. Desktops Explained** – YouTube](https://youtu.be/UjCDWCeHCzY) 4. 📺 [**Network Topology** – YouTube](https://youtu.be/lnFeG4DOMcE) 5. 📺 [**Network Topologies (Star, Bus, Ring, Mesh, Ad hoc, Infrastructure, & Wireless Mesh Topology)** – YouTube](https://youtu.be/zbqrNg4C98U) @@ -213,7 +213,7 @@ This repository is a visual cheatsheet on the main topics in Backend-development 2. 📺 [**Public IP vs. Private IP and Port Forwarding (Explained by Example)** – YouTube](https://youtu.be/92b-jjBURkw) 3. 📺 [**Network Ports Explained** – YouTube](https://youtu.be/g2fT-g9PX9o) 4. 📺 [**What is IP address and types of IP address - IPv4 and IPv6** – YouTube](https://youtu.be/8npT9AALbrI) -5. 📺 [**IP Address - IPv4 vs IPv6 Tutorial** – YouTube](https://youtu.be/ThdO9beHhpA) +5. 📺 [**IP Address - IPv4 vs. IPv6 Tutorial** – YouTube](https://youtu.be/ThdO9beHhpA) 6. 📄 [**IP Address Subnet Cheat Sheet** – freeCodeCamp](https://www.freecodecamp.org/news/subnet-cheat-sheet-24-subnet-mask-30-26-27-29-and-other-ip-address-cidr-network-references/) @@ -223,7 +223,7 @@ This repository is a visual cheatsheet on the main topics in Backend-development - [DNS (Domain Name System)](https://en.wikipedia.org/wiki/DNS) is a decentralized Internet address naming system that allows you to create human-readable alphabetic names (domain names) corresponding to the numeric [IP addresses](#ip-address) used by computers. + [DNS (Domain Name System)](https://en.wikipedia.org/wiki/DNS) is a decentralized Internet address naming system that allows you to create human-readable alphabetical names (domain names) corresponding to the numeric [IP addresses](#ip-address) used by computers. - Structure of DNS > DNS consists of many independent nodes, each of which stores only those data that fall within its area of responsibility. @@ -254,8 +254,8 @@ This repository is a visual cheatsheet on the main topics in Backend-development The tasks of the Frontend are: - Implementation of the user interface (appearance of the application) - > - A special markup language [HTML](https://en.wikipedia.org/wiki/HTML) is used to create web pages. - > - [CSS](https://en.wikipedia.org/wiki/CSS) style language is used to style fonts, layout of content, etc. + > - A special markup language [HTML](https://en.wikipedia.org/wiki/HTML) is used to create web pages. + > - [CSS](https://en.wikipedia.org/wiki/CSS) style language is used to style fonts, layout of content, etc. > - [JavaScript](https://en.wikipedia.org/wiki/JavaScript) programming language is used to add dynamics and interactivity.- + AND | a | b | a AND b | |---|---|:-------:| @@ -1168,7 +1168,7 @@ There are a huge number of [Linux distributions](https://en.wikipedia.org/wiki/L | 0 | 1 | 0 | | 1 | 0 | 0 | | 1 | 1 | 1 | - + |
OR
@@ -1282,13 +1282,13 @@ There are a huge number of [Linux distributions](https://en.wikipedia.org/wiki/L
- [Selection sort](https://en.wikipedia.org/wiki/Selection_sort)
> At each step of the algorithm, the minimum element is searched for and then swapped with the current iteration element.
- [Recursion](https://en.wikipedia.org/wiki/Recursion)
- > When a function can call itself and so on to infinity. On the one hand, recursion-based solutions look very elegant, but on the other hand, this approach quickly leads to stack overflow and is recommended to be avoided.
+ > When a function can call itself and so on to infinity. On the one hand, recursion-based solutions look very elegant, but on the other hand, this approach quickly leads to Stack Overflow and is recommended to be avoided.
- [Bubble sort](https://en.wikipedia.org/wiki/Bubble_sort)
> At each iteration neighboring elements are sequentially compared, and if the order of the pair is wrong, the elements are swapped.
- [Quicksort](https://en.wikipedia.org/wiki/Quicksort)
> Improved bubble sorting method.
- [Breadth-first search](https://en.wikipedia.org/wiki/Breadth-first_search)
- > Allows to find all shortest paths from a given vertex of the graph.
+ > Allows finding all shortest paths from a given vertex of the graph.
- [Dijkstra's algorithm](https://en.wikipedia.org/wiki/Dijkstra%27s_algorithm)
> Finds the shortest paths between all vertices of a graph and their length.
- [Greedy algorithm](https://en.wikipedia.org/wiki/Greedy_algorithm)
@@ -1322,7 +1322,7 @@ There are a huge number of [Linux distributions](https://en.wikipedia.org/wiki/L
- [Time complexity](https://en.wikipedia.org/wiki/Time_complexity)
> When you know in advance on which machine the algorithm will be executed, you can measure the execution time of the algorithm. Again, on very good hardware the execution time of the algorithm can be quite acceptable, but the same algorithm on a weaker hardware can run for hundreds of milliseconds or even a few seconds. Such delays will be very sensitive if your application handles user requests over the network.
- [Space complexity](https://en.wikipedia.org/wiki/Space_complexity)
- > In addition to time, you need to consider how much memory is spent on the work of an algorithm. It is important when you working with limited memory resources.
+ > In addition to time, you need to consider how much memory is spent on the work of an algorithm. It is important when you're working with limited memory resources.
🔗 References@@ -1377,7 +1377,7 @@ There are a huge number of [Linux distributions](https://en.wikipedia.org/wiki/L > Is a video format developed by Apple for use with their QuickTime media player. It is widely used with Mac and iOS devices. MOV files can contain both video and audio, and they offer good compression and quality, making them suitable for editing and professional use. - [WEBM](https://en.wikipedia.org/wiki/WebM) > Best for videos embedded on your personal or business website. It is lightweight, load quickly and stream easily. - + - Audio formats - [MP3 (MPEG-1 Audio Layer 3)](https://en.wikipedia.org/wiki/MP3) > The most popular audio format known for its high compression and small file sizes. It achieves this by removing some of the audio data that may be less perceptible to the human ear. Suitable for music storage, streaming, and sharing. @@ -1393,7 +1393,7 @@ There are a huge number of [Linux distributions](https://en.wikipedia.org/wiki/L 2. 📺 [**Serialization formats: JSON and Protobuf** – YouTube](https://youtu.be/uGYZn6xk-hA) 3. 📺 [**Protocol Buffers Crash Course** – YouTube](https://youtu.be/46O73On0gyI) 4. 📺 [**Explaining Image File Formats** – YouTube](https://youtu.be/WblPwVq9KnU) -5. 📺 [**What's the difference between a JPEG, PNG, GIF, etc...?** – YouTube](https://youtu.be/ww12lImOJ38) +5. 📺 [**What's the difference between a JPEG, PNG, GIF, etc…?** – YouTube](https://youtu.be/ww12lImOJ38)🔗 References- + 1. 📺 [**Unicode, in friendly terms: ASCII, UTF-8 and more** – YouTube](https://youtu.be/ut74oHojxqo) 2. 📄 [**Understanding the ASCII Table**](https://linuxhandbook.com/ascii-table/) 3. 📺 [**Unicode Encoding! UTF-32, UCS-2, UTF-16, & UTF-8!** – YouTube](https://youtu.be/uTJoJtNYcaQ) @@ -1432,13 +1432,13 @@ At this stage you have to choose one programming language to study. There is ple - [JavaScript](https://en.wikipedia.org/wiki/JavaScript) > No less popular and practically the only language for full-fledged Web-development. Thanks to the platform [Node.js](https://en.wikipedia.org/wiki/Node.js) last few years is gaining popularity in the field of backend development as well. - [Go](🔗 References-1. 📺 [**Synchronous vs Asynchronous Applications (Explained by Example)** – YouTube](https://youtu.be/N5Ky-mz6n-8) +1. 📺 [**Synchronous vs. Asynchronous Applications (Explained by Example)** – YouTube](https://youtu.be/N5Ky-mz6n-8) 2. 📄 [**Async IO in Python: A Complete Walkthrough**](https://realpython.com/async-io-python/) 3. 📄 [**Asynchronous Programming in JavaScript – Guide for Beginners** – freeCodeCamp](https://www.freecodecamp.org/news/asynchronous-programming-in-javascript/) 4. 📄 [**A roadmap for asynchronous programming in JavaScript**](https://exploringjs.com/impatient-js/ch_async-js.html#roadmap-async-functions) @@ -1679,8 +1679,8 @@ Look for a special [awesome repository](https://github.com/sindresorhus/awesome#🔗 References1. 📺 [**Multithreading Code - Computerphile** – YouTube](https://youtu.be/7ENFeb-J75k) -2. 📺 [**Threading vs multiprocessing in Python** – YouTube](https://youtu.be/AZnGRKFUU0c) -3. 📺 [**When is NodeJS Single-Threaded and when is it Multi-Threaded?** – YouTube](https://youtu.be/gMtchRodC2I) +2. 📺 [**Threading vs. multiprocessing in Python** – YouTube](https://youtu.be/AZnGRKFUU0c) +3. 📺 [**When is Node.js Single-Threaded and when is it Multi-Threaded?** – YouTube](https://youtu.be/gMtchRodC2I) 4. 📺 [**How to use Multithreading with "worker threads" in Node.js?** – YouTube](https://youtu.be/MuwJJrfIfsU) 5. 📺 [**Concurrency in Go** – YouTube](https://youtube.com/playlist?list=PLsc-VaxfZl4do3Etp_xQ0aQBoC-x5BIgJ) 6. 📺 [**Kotlin coroutines** – YouTube](https://youtube.com/playlist?list=PLQkwcJG4YTCQcFEPuYGuv54nYai_lwil_) @@ -1693,7 +1693,7 @@ Look for a special [awesome repository](https://github.com/sindresorhus/awesome# - [Garbage collector](🔗 References@@ -1780,7 +1780,7 @@ Look for a special [awesome repository](https://github.com/sindresorhus/awesome#🔗 References1. 📄 [**Comparing database types: how database types evolved to meet different needs**](https://www.prisma.io/dataguide/intro/comparing-database-types) -2. 📄 [**SQL vs NoSQL Database – A Complete Comparison**](https://backendless.com/sql-vs-nosql-database-a-complete-comparison/) +2. 📄 [**SQL vs. NoSQL Database – A Complete Comparison**](https://backendless.com/sql-vs-nosql-database-a-complete-comparison/) 3. 📺 [**7 Database Paradigms** – YouTube](https://youtu.be/W2Z7fbCLSTw)🔗 References1. 📺 [**SQL Crash Course - Beginner to Intermediate** – YouTube](https://youtu.be/nWeW3sCmD2k) -2. 📺 [**SQL Tutorial for Beginners (and Technical Interview Questions Solved)** – YouTube](https://youtu.be/-fW2X7fh7Yg) +2. 📺 [**SQL Tutorial for Beginners (and Technical Interview Questions Solved)** – YouTube](https://youtu.be/-fW2X7fh7Yg) 3. 📺 [**SQL Tutorial - Full Database Course for Beginners** – YouTube](https://youtu.be/HXV3zeQKqGY) 4. 📺 [**MySQL - The Basics. Learn SQL in 23 Easy Steps** – YouTube](https://youtu.be/Cz3WcZLRaWc) 5. 📄 [**MySQL command-line client commands**](https://www.mysqltutorial.org/mysql-cheat-sheet.aspx) @@ -1886,7 +1886,7 @@ Look for a special [awesome repository](https://github.com/sindresorhus/awesome# SETEX key 1000 "value" # consolidation of commands SET and EXPIRE ``` - Transactions - > `MULTI` — start recording commands for the transaction.`EXEC` — execute the recorded commands. `DISCARD` — delete all recorded commands. `WATCH` — command that provides execution only if other clients have not changed the value of the variable. Otherwise EXEC will not execute the written commands. + > `MULTI` — start recording commands for the transaction. `EXEC` — execute the recorded commands. `DISCARD` — delete all recorded commands. `WATCH` — command that provides execution only if other clients have not changed the value of the variable. Otherwise, EXEC will not execute the written commands. 🔗 References@@ -1937,9 +1937,9 @@ Look for a special [awesome repository](https://github.com/sindresorhus/awesome# - Define the attributes to each entity > Each entity has a set of specific attributes. For example, attributes of a book might include its title, author, ISBN, and publication date. Each attribute has a specific data type, be it a string, an integer, a boolaen, and so on. - Add constraints - > Attribute values may have certain limitations. For example, strings can only be unique or have a limit on the maximum number of characters. + > Attribute values may have certain limitations. For example, strings can only be unique or have a limit on the maximum number of characters. - Define relationships - > Entities can be linked to one another by one type of relationship: [one to one](https://vertabelo.com/blog/one-to-one-relationship-in-database/), [one to many](https://vertabelo.com/blog/one-to-many-relationship/) or [many to many](https://vertabelo.com/blog/many-to-many-relationship/). For example, a book might have one or more authors, and an author might write one or more books. You can represent these relationships by creating a foreign key in one table that references the primary key in another table. + > Entities can be linked to one another by one type of relationship: [one to one](https://vertabelo.com/blog/one-to-one-relationship-in-database/), [one to many](https://vertabelo.com/blog/one-to-many-relationship/) or [many to many](https://vertabelo.com/blog/many-to-many-relationship/). For example, a book might have one or more authors, and an author might write one or more books. You can represent these relationships by creating a foreign key in one table that references the primary key in another table. - [Normalization](https://en.wikipedia.org/wiki/Database_normalization) > It is the process of separating data into separate related tables. Normalization eliminates [data redundancy](https://en.wikipedia.org/wiki/Data_redundancy) and thus avoids data integrity violations when data changes. - Optimize for performance @@ -1969,28 +1969,28 @@ When developing server applications, [different API formats](https://youtu.be/4v Basic rules for writing a good REST API: - Using HTTP methods - > As a rule, a single URL route is used to work on a particular data model (e.g. for users - `/api/user`). To perform different operations (get/create/edit/delete), this route must implement handlers for the corresponding HTTP methods (GET/POST/PUT/DELETE). + > As a rule, a single URL route is used to work on a particular data model (e.g., for users - `/api/user`). To perform different operations (get/create/edit/delete), this route must implement handlers for the corresponding HTTP methods (GET/POST/PUT/DELETE). - Use of plural names - > For example, a URL to retrieve one user by id looks like this: `/user/42`, and to retrieve all users like this: `/users`. + > For example, a URL to retrieve one user by ID looks like this: `/user/42`, and to retrieve all users like this: `/users`. - Sending the appropriate HTTP response codes > The most commonly used: [200](https://developer.mozilla.org/en/docs/Web/HTTP/Status/200), [201](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/201), [204](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/204), [304](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/304), [400](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/400), [401](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/401), [403](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/403), [404](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404), [405](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/405), [410](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/410), [415](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/415), [422](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422), [429](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429). - [Versioning](https://github.com/NationalBankBelgium/REST-API-Design-Guide/wiki/REST-API-Versioning) - > Over time you may want or need to fundamentally change the way your REST API service works. To avoid breaking applications using the current version, you can leave it where it is and implement the new version over a different URL route, e.g. `/api/v2`. - + > Over time you may want or need to fundamentally change the way your REST API service works. To avoid breaking applications using the current version, you can leave it where it is and implement the new version over a different URL route, e.g., `/api/v2`. + [API Design](https://twirl.github.io/The-API-Book/index.html) > API development and design is a very important and responsible moment, as your API functionality will be used by other developers and systems to integrate with your service. Mistakes made during design can negatively affect not only the growth opportunities of your service, but also many others that depend on yours.🔗 References-1. 📄 [**What Is Restful API?** – AWS](https://aws.amazon.com/what-is/restful-api/?nc1=h_ls) +1. 📄 [**What Is RESTful API?** – AWS](https://aws.amazon.com/what-is/restful-api/?nc1=h_ls) 2. 📺 [**What is REST API?** – YouTube](https://youtu.be/lsMQRaeKNDk) 3. 📺 [**APIs for Beginners 2023 - How to use an API (Full Course)** – YouTube](https://youtu.be/WXsD0ZgxjRw) 4. 📺 [**Build Web APIs with Python – Django REST Framework Course** – YouTube](https://youtu.be/tujhGdn1EMI) 5. 📺 [**Build an API from Scratch with Node.js Express** – YouTube](https://youtu.be/-MTSQjw5DrM) 6. 📺 [**Build REST API on Vanilla Node.js** – YouTube](https://youtu.be/_1xa8Bsho6A) -7. 📺 [**Build a Rest API with GoLang** – YouTube](https://youtu.be/d_L64KT3SFM) -8. 📺 [**Spring Kotlin - Building a Rest API Tutorial** – YouTube](https://youtube.com/playlist?list=PLNnNHr-wCfobAxSkuxMqFGdpA8E5cLR6w) +7. 📺 [**Build a REST API with Go** – YouTube](https://youtu.be/d_L64KT3SFM) +8. 📺 [**Spring Kotlin - Building a REST API Tutorial** – YouTube](https://youtube.com/playlist?list=PLNnNHr-wCfobAxSkuxMqFGdpA8E5cLR6w) 9. 📄 [**REST API design full guide** – GitHub](https://github.com/NationalBankBelgium/REST-API-Design-Guide/wiki) 10. 📄 [**Awesome REST** – GitHub](https://github.com/marmelab/awesome-rest)+ > There are two main protocols: [XML-RPC](https://en.wikipedia.org/wiki/XML-RPC) and [SOAP (Simple Object Access Protocol)](https://en.wikipedia.org/wiki/SOAP) > They are considered deprecated and not recommended for new projects because they are heavyweight and complex compared to newer alternatives such as REST, GraphQL and newer RPC protocols. - [JSON-RPC](https://en.wikipedia.org/wiki/JSON-RPC) > A protocol with a very simple [specification](https://www.jsonrpc.org/specification). All requests and responses are serialized in JSON format. - > - A request to the server includes: `method` - the name of the method to be invoked; `params` - object or array of values to be passed as parameters to the defined method; `id` - identificator used to match the response with the request. + > - A request to the server includes: `method` - the name of the method to be invoked; `params` - object or array of values to be passed as parameters to the defined method; `id` - identifier used to match the response with the request. > - A response includes: `result` - data returned by the invoked method; `error` - object with error or null for success; `id` - the same as in the request. - [gRPC](https://en.wikipedia.org/wiki/GRPC) > RPC framework developed by Google. It works by defining a service using [Protocol Buffers](https://en.wikipedia.org/wiki/Protocol_Buffers), a language-agnostic binary serialization format, that generates to client and server code for various programming languages. > - Understand [protobuf fundamentals](https://protobuf.dev/programming-guides/proto3/). - > - See turorials for your language: [Python](https://grpc.io/docs/languages/python/quickstart/), [Node.js](https://grpc.io/docs/languages/node/basics/), [Go](https://grpc.io/docs/languages/go/quickstart/), [Kotlin](https://grpc.io/docs/languages/kotlin/quickstart/), etc. + > - See tutorials for your language: [Python](https://grpc.io/docs/languages/python/quickstart/), [Node.js](https://grpc.io/docs/languages/node/basics/), [Go](https://grpc.io/docs/languages/go/quickstart/), [Kotlin](https://grpc.io/docs/languages/kotlin/quickstart/), etc. > - Learn [style guides](https://protobuf.dev/programming-guides/style/). 🔗 References@@ -2079,8 +2079,8 @@ When developing server applications, [different API formats](https://youtu.be/4v 3. 📺 [**gRPC Crash Course - Modes, Examples, Pros & Cons and more** – YouTube](https://youtu.be/Yw4rkaTc0f8) 4. 📺 [**This is why gRPC was invented** – YouTube](https://youtu.be/u4LWEXDP7_M) 5. 📺 [**gRPC with Python - microservice complete tutorial** – YouTube](https://youtu.be/E0CaocyNYKg) -6. 📺 [**Implementing a gRPC client and server in Typescript with Node.js** – YouTube](https://youtu.be/H0c4Wjl4kRQ) -7. 📺 [**Build a gRPC server with Go - Step by step tutorial** – YouTube](https://youtu.be/gbrPMv_GuQY) +6. 📺 [**Implementing a gRPC client and server in TypeScript with Node.js** – YouTube](https://youtu.be/H0c4Wjl4kRQ) +7. 📺 [**Build a gRPC server with Go - Step-by-step tutorial** – YouTube](https://youtu.be/gbrPMv_GuQY) 8. 📄 [**Awesome gRPC** – GitHub](https://github.com/grpc-ecosystem/awesome-grpc)🔗 References-1. 📺 [**Git It? How to use Git and Github** – YouTube](https://youtu.be/HkdAHXoRtos) +1. 📺 [**Git It? How to use Git and GitHub** – YouTube](https://youtu.be/HkdAHXoRtos) 2. 📺 [**Git and GitHub for Beginners - Crash Course** – YouTube](https://youtu.be/RGOj5yH7evk) 3. 📺 [**13 Advanced (but useful) Git Techniques and Shortcuts** – YouTube](https://youtu.be/RGOj5yH7evk) 4. 📄 [**Understanding Git through images** – dev.to](https://dev.to/nopenoshishi/understanding-git-through-images-4an1) -5. 📄 [**Learn git concepts, not commands** – GitHub](https://github.com/UnseenWizzard/git_training) +5. 📄 [**Learn Git concepts, not commands** – GitHub](https://github.com/UnseenWizzard/git_training) 6. 📄 [**Git Cheat Sheet – 50 Git Commands You Should Know** – freeCodeCamp](https://www.freecodecamp.org/news/git-cheat-sheet/) 7. 📄 [**Git Commit Patterns** – dev.to](https://dev.to/hornet_daemon/git-commit-patterns-5dm7) 8. 📄 [**Collection of .gitignore templates** – GitHub](https://github.com/github/gitignore) @@ -2170,7 +2170,7 @@ When developing server applications, [different API formats](https://youtu.be/4v ```bash FROM [image_name] # Setting a base image WORKDIR [path] # Setting the root directory inside the container - COPY [path_relative_Dockefile] [path_in_container] # Copying files + COPY [path_relative_Dockerfile] [path_in_container] # Copying files ADD [path] [path] # Similar to the command above RUN [command] # A command that runs only when the image is initialized CMD ["command"] # The command that runs every time you start the container @@ -2200,7 +2200,7 @@ When developing server applications, [different API formats](https://youtu.be/4v - ### Postman/Insomnia - When creating a server application, it is necessary to test it's workability. This can be done in different ways. One of the easiest is to use the console utility [curl](https://en.wikipedia.org/wiki/CURL). But this is good for very simple applications. Much more efficient is to use special software for testing, which have a user-friendly interface and all the necessary functionality to create collections of queries. + When creating a server application, it is necessary to test its workability. This can be done in different ways. One of the easiest is to use the console utility [cURL](https://en.wikipedia.org/wiki/CURL). But this is good for very simple applications. Much more efficient is to use special software for testing, which have a user-friendly interface and all the necessary functionality to create collections of queries. - [Postman](https://www.postman.com/) > A very popular and feature-rich program. It definitely has everything you might need and more: from the trivial creation of collections to raising mock-servers. The basic functionality of the application is free of charge. @@ -2214,7 +2214,7 @@ When developing server applications, [different API formats](https://youtu.be/4v 2. 📺 [**Postman Beginner's Course - API Testing** – YouTube](https://youtu.be/VywxIQ2ZXw4) 3. 📺 [**Postman API Test Automation for Beginners** – YouTube](https://youtu.be/zp5Jh2FIpF0?si=A1UMThcDUhxLj8ye) 4. 📺 [**Insomnia API Client Tutorial** – YouTube](https://youtu.be/x2AlTaFJJxs) -5. 📺 [**Insomnia Tutorial: API Design, Testing and Collaboration** – YouTube](https://youtu.be/fzLPHpOP3Wc) +5. 📺 [**Insomnia Tutorial: API Design, Testing, and Collaboration** – YouTube](https://youtu.be/fzLPHpOP3Wc)+ > Not all languages can have a built-in web server (e.g., PHP). Therefore, to run web applications written in such languages, a third-party one is needed. > A single server (virtual or dedicated) can run several applications, but only one external IP address. A configured web server solves this problem and can redirect incoming requests to the right applications. - Popular web servers > [Nginx](https://en.wikipedia.org/wiki/Nginx) – the most popular at the moment. @@ -2277,7 +2277,7 @@ When developing server applications, [different API formats](https://youtu.be/4v [Ngrok](https://ngrok.com/) is a tool for creating public [tunnels](https://en.wikipedia.org/wiki/Tunneling_protocol) on the Internet that allows local network applications (web servers, websites, bots, etc.) to be accessible from outside. - How does it work? - > Ngrok creates a temporary public URL that can be used to access your local server from the Internet. Once Ngrok is started, you have access to the console, where you can monitor requests, handling and responses to those requests, and configure additional features such as authentication and encryption. + > Ngrok creates a temporary public URL that can be used to access your local server from the Internet. Once Ngrok is started, you have access to the console, where you can monitor requests, handling, and responses to those requests, and configure additional features such as authentication and encryption. - What to use it for? > For example, to test web sites and APIs, to demonstrate running applications on a local server, to access local network applications over the Internet without having to set up a router, firewall, proxy server, etc. @@ -2294,11 +2294,11 @@ When developing server applications, [different API formats](https://youtu.be/4v Artificial intelligence systems have made an incredible leap recently. Every day there are more and more tools that can write code for you, generate documentation, do code reviews, help you learn new technologies, and so on. Many people are still skeptical about the capabilities and quality of content that AI creates. But at least by now, a lot of time and resources can be saved to increase the productivity of any developer. - [ChatGPT](https://en.wikipedia.org/wiki/ChatGPT) - > The highest quality [LLM](https://en.wikipedia.org/wiki/Large_language_model) at the moment. Works like a normal chat bot and has no problem understanding human speech in several languages. + > The highest quality [LLM](https://en.wikipedia.org/wiki/Large_language_model) at the moment. Works like a normal chatbot and has no problem understanding human speech in several languages. - [Bard](https://en.wikipedia.org/wiki/Bard_(chatbot)) - > Developed by Goolge as an alternative and direct competitor to ChatGPT. + > Developed by Google as an alternative and direct competitor to ChatGPT. - [GitHub Copilot](https://en.wikipedia.org/wiki/GitHub_Copilot) - > AI-powered code completion tool developed by GitHub in collaboration with developers of ChatGPT. It integrates with popular code editors and provides real-time suggestions and completions for code as you write. + > AI-powered code completion tool developed by GitHub in collaboration with developers of ChatGPT. It integrates with popular code editors and provides real-time suggestions and completions for code as you write. - [Tabnine](https://www.tabnine.com/) > An alternative to GitHub Copilot that provides context-sensitive code suggestions based on patterns it learns from millions of publicly available code repositories. @@ -2347,21 +2347,21 @@ When developing server applications, [different API formats](https://youtu.be/4v - ### Environment variables - Often your applications may use various tokens (e.g. to access a third-party paid API), logins and passwords (to connect to a database), various secret keys for signatures and so on. All this data should not be known and available to outsiders, so you can't leave them in the program code in any case. To solve this problem, there are environment variables. + Often your applications may use various tokens (e.g., to access a third-party paid API), logins and passwords (to connect to a database), various secret keys for signatures and so on. All this data should not be known and available to outsiders, so you can't leave them in the program code in any case. To solve this problem, there are environment variables. - The `.env` file > A special file in which you can store all environment variables. - Parsing the `.env` file > Variables are passed to the program using command line arguments. To do the same with the `.env` file, you need to use a special library for your language. - Storage and transfer `.env` files - > Learn how to upload `.env` files to the hosting services and remember that such files cannot be commited to remote repositories, so do not forget to add them to exceptions via the `.gitignore` file. + > Learn how to upload `.env` files to the hosting services and remember that such files cannot be committed to remote repositories, so do not forget to add them to exceptions via the `.gitignore` file. 🔗 References1. 📺 [**How to use environment variables in a Python script** – YouTube](https://youtu.be/ed2NGpsws8Y) 2. 📺 [**Configure Node.js Environment Variables for Local Development & Production** – YouTube](https://youtu.be/gfyQzeBlLTI) -3. 📺 [**GoLang Environment Variables** – YouTube](https://youtu.be/mnCgl-iwPak) +3. 📺 [**Golang Environment Variables** – YouTube](https://youtu.be/mnCgl-iwPak)
@@ -2469,7 +2469,7 @@ Testing is the process of assessing that all parts of the program behave as expe
- What do I need to start writing unit tests?
> As a rule, the means of the standard language library are enough to write quality tests. But for more convenient and faster writing of tests, it is better to use third-party tools. For example:
>
- > - For Python it uses [pytest](https://docs.pytest.org), although the standard [unittest](https://docs.python.org/3/library/unittest.html) is enough to start with.
+ > - For , it uses [pytest](https://docs.pytest.org), although the standard [unittest](https://docs.python.org/3/library/unittest.html) is enough to start with.
> - For JavaScript/TypeScript, the best choices are [Jest](https://jestjs.io/).
> - For Go – [testify](https://github.com/stretchr/testify).
> - [And so on...](https://github.com/atinfo/awesome-test-automation#awesome-test-automation)
@@ -2482,7 +2482,7 @@ Testing is the process of assessing that all parts of the program behave as expe
3. 📺 [**Testing JavaScript with Cypress – Full Course** – YouTube](https://youtu.be/u8vMu7viCm8?si=wYAoeR87-dPOIRA4)
4. 📺 [**How To Write Unit Tests For Existing Python Code** – YouTube](https://youtu.be/ULxMQ57engo)
5. 📺 [**Learn How to Test your JavaScript Application** – YouTube](https://youtu.be/ajiAl5UNzBU)
-6. 📺 [**GoLang Unit Testing and Mock Testing Tutorial** – YouTube](https://youtu.be/XQzTUa9LPU8)
+6. 📺 [**Golang Unit Testing and Mock Testing Tutorial** – YouTube](https://youtu.be/XQzTUa9LPU8)
@@ -2502,7 +2502,7 @@ Testing is the process of assessing that all parts of the program behave as expe
🔗 References-1. 📺 [**Unit testing vs integration testing** – YouTube](https://youtu.be/pf6Zhm-PDfQ) +1. 📺 [**Unit testing vs. integration testing** – YouTube](https://youtu.be/pf6Zhm-PDfQ) 2. 📺 [**PyTest REST API Integration Testing with Python** – YouTube](https://youtu.be/7dgQRVqF1N0) 3. 📄 [**Integration Testing – Software testing fundamentals**](https://softwaretestingfundamentals.com/integration-testing/)🔗 References@@ -2558,7 +2558,7 @@ Testing is the process of assessing that all parts of the program behave as expe [Regression testing](https://en.wikipedia.org/wiki/Regression_testing) is a type of testing aimed at detecting errors in already tested portions of the source code. - Why use it? - > Statistically, the reappearance of the same bugs in code is quite frequent. And, most interestingly, the patches/fixes issued for them also stop working in time. Therefore it is considered good practice to create a test for it when fixing a bug and run it regularly for next modifications. + > Statistically, the reappearance of the same bugs in code is quite frequent. And, most interestingly, the patches/fixes issued for them also stop working in time. Therefore, it is considered good practice to create a test for it when fixing a bug and run it regularly for next modifications.🔗 References@@ -2592,7 +2592,7 @@ Testing is the process of assessing that all parts of the program behave as expe🔗 References-1. 📺 [**Big Vs Small Public Cloud Providers** – YouTube](https://youtu.be/LJomGBuBDaU) +1. 📺 [**Big vs. Small Public Cloud Providers** – YouTube](https://youtu.be/LJomGBuBDaU) 2. 📺 [**Top 50+ AWS Services Explained in 10 Minutes** – YouTube](https://youtu.be/JIbIYCM48to) 3. 📺 [**AWS Certified Cloud Practitioner Certification Course** – YouTube](https://youtu.be/SOTamWNgDKc) 4. 📄 [**Awesome AWS (list of libraries, open source repos, guides, blogs) – GitHub**](https://github.com/donnemartin/awesome-aws) @@ -2617,7 +2617,7 @@ Testing is the process of assessing that all parts of the program behave as expe > - Use separate containers for different services (ex. application server, database, cache, metrics etc.). > - Use Docker volumes to store persistent data such as database files, logs, and configuration files. - [Docker swarm](https://docs.docker.com/engine/swarm/) - > It is a native orchestration tool for Docker to manage, scale and automate tasks such as container updates, recovery, traffic balancing, [service discovery](https://devopscube.com/service-discovery-explained/) and so on. + > It is a native orchestration tool for Docker to manage, scale and automate tasks such as container updates, recovery, traffic balancing, [service discovery](https://devopscube.com/service-discovery-explained/) and so on. - [Kubernetes](https://en.wikipedia.org/wiki/Kubernetes) (K8s) > Is a very popular orchestration platform that can work with a variety of container runtimes including Docker. Kubernetes offers a more comprehensive set of features (than Docker swarm), including advanced scheduling, storage orchestration, and self-healing capabilities. @@ -2630,7 +2630,7 @@ Testing is the process of assessing that all parts of the program behave as expe 4. 📺 [**Best practices around creating a production web app with Docker and Docker Compose** – YouTube](https://youtu.be/vYpPGCaKs3I) 5. 📺 [**Docker Swarm Tutorial** – YouTube](https://youtu.be/Tm0Q5zr3FL4) 6. 📄 [**Awesome Swarm** – GitHub](https://github.com/BretFisher/awesome-swarm) -7. 📄 [**Kubernetes VS Docker Swarm – What is the Difference?**](https://www.freecodecamp.org/news/kubernetes-vs-docker-swarm-what-is-the-difference/) +7. 📄 [**Kubernetes vs. Docker Swarm – What is the Difference?**](https://www.freecodecamp.org/news/kubernetes-vs-docker-swarm-what-is-the-difference/) 8. 📄 [**Kubernetes Roadmap**](https://roadmap.sh/kubernetes) 9. 📄 [**Kubernetes Learning Roadmap** – GitHub](https://github.com/techiescamp/kubernetes-learning-path) 10. 📺 [**Docker Containers and Kubernetes Fundamentals – Full Hands-On Course** – YouTube](https://youtu.be/kTp5xUtcalw) @@ -2644,10 +2644,10 @@ Testing is the process of assessing that all parts of the program behave as expe To streamline the process of building, testing, deploying code changes, integrate with other tools in the development ecosystem, such as code repositories, issue trackers, monitoring systems to provide a more comprehensive development workflow you can use some automation tools and services. - - [Github Actions](https://docs.github.com/en/actions) - > CI/CD tool built into the Github platform, which enables developers to automate workflows for their repositories. A great choice if you already use GitHub. There are a large number of pre-built actions. One of the most useful feature is ability to trigger workflows based on various events, such as pull requests or other repository activity. + - [GitHub Actions](https://docs.github.com/en/actions) + > CI/CD tool built into the GitHub platform, which enables developers to automate workflows for their repositories. A great choice if you already use GitHub. There are a large number of pre-built actions. One of the most useful feature is ability to trigger workflows based on various events, such as pull requests or other repository activity. - [Jenkins](https://en.wikipedia.org/wiki/Jenkins_(software)) - > Highly configurable and extensible open source tool with a large ecosystem of plugins available to customize its functionality. Jenkins can be used in various environments, including on-premise, cloud-based and hybrid setups. + > Highly configurable and extensible open source tool with a large ecosystem of plugins available to customize its functionality. Jenkins can be used in various environments, including on-premise, cloud-based and hybrid setups. - [Circle CI](https://en.wikipedia.org/wiki/CircleCI) > It is a cloud-based CI/CD platform designed to be fast and easy to set up, with a focus on developer productivity. Circle CI integrates with various cloud-based services, such as AWS, Google Cloud and Microsoft Azure. You can also host it locally on your network. - [Travis CI](https://en.wikipedia.org/wiki/Travis_CI) @@ -2773,7 +2773,7 @@ Testing is the process of assessing that all parts of the program behave as expe 3. 📺 [**HTTP Caching with E-Tags - (Explained by Example)** – YouTube](https://youtu.be/TgZnpp5wJWU) 4. 📺 [**What Is A CDN? How Does It Work?** – YouTube](https://youtu.be/RI9np1LWzqw) 5. 📺 [**Everything you need to know about HTTP Caching** – YouTube](https://youtu.be/HiBDZgTNpXY) -6. 📺 [**Memcached Architecture - Crash Course with Docker, Telnet, NodeJS** – YouTube](https://youtu.be/NCePGsRZFus) +6. 📺 [**Memcached Architecture - Crash Course with Docker, Telnet, Node.js** – YouTube](https://youtu.be/NCePGsRZFus)🔗 References-1. 📺 [**How To Write a USEFUL README On Github** – YouTube](https://youtu.be/E6NO0rgFub4) +1. 📺 [**How To Write a USEFUL README On GitHub** – YouTube](https://youtu.be/E6NO0rgFub4) 2. 📺 [**Obsidian As A Second Brain: The ULTIMATE Tutorial** – YouTube](https://youtu.be/WqKluXIra70)🔗 References-1. 📺 [**System Design: What is Horizontal vs Vertical Scaling?** – YouTube](https://youtu.be/p1YQU5sEz4g) +1. 📺 [**System Design: What is Horizontal vs. Vertical Scaling?** – YouTube](https://youtu.be/p1YQU5sEz4g) 2. 📄 [**Vertical vs. Horizontal Scaling: Which one to choose**](https://middleware.io/blog/vertical-vs-horizontal-scaling/) |