Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,4 @@ Visit the following resources to learn more:
- [@article@Python principles - Python basics](https://pythonprinciples.com/)
- [@article@Python Crash Course](https://ehmatthes.github.io/pcc/)
- [@article@An Introduction to Python for Non-Programmers](https://thenewstack.io/an-introduction-to-python-for-non-programmers/)
- [@article@Getting Started with Python and InfluxDB](https://thenewstack.io/getting-started-with-python-and-influxdb/)
- [@feed@Explore top posts about Python](https://app.daily.dev/tags/python?ref=roadmapsh)
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# Actor Model

The **Actor Model** is a conceptual model to deal with concurrent computation. It defines some general rules for how the system's components should behave and interact with each other. In the Actor Model, each object (actor) has its own private state and communication with other actors is done by exchanging messages. Actors read messages from a personal mailbox and may change their own inner state, create more actors, or send messages to other actors. The Actor Model makes it easier for developers to write concurrent and distributed systems by providing high-level abstractions over low-level threading details.
The **Actor Model** is a conceptual model to deal with concurrent computation. It defines some general rules for how the system's components should behave and interact with each other. In the Actor Model, each object (actor) has its own private state and communication with other actors is done by exchanging messages. Actors read messages from a personal mailbox and may change their own inner state, create more actors, or send messages to other actors. The Actor Model makes it easier for developers to write concurrent and distributed systems by providing high-level abstractions over low-level threading details.
Visit the following resources to learn more:

- [@article@How the Actor Model Works by Example - TheServerSide](https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/How-the-Actor-Model-works-by-example)
- [@official@How the Actor Model Meets the Needs of Modern Distributed Systems - Akka Docs](https://doc.akka.io/libraries/akka-core/current/typed/guide/actors-intro.html)
- [@article@Actor Model - Wikipedia](https://en.wikipedia.org/wiki/Actor_model)
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# Address Conversion

In socket programming, address conversion functions are important for handling internet addresses. Functions like `inet_pton()` (presentation to network) and `inet_ntop()` (network to presentation) are frequently used. `inet_pton()` function converts an IP address in human-friendly format (IPv4 addresses in dotted-decimal notation or IPv6 addresses in hexadecimal notation) to its equivalent binary form. Conversely, `inet_ntop()` function does the reverse, i.e., it converts an IP address in binary form to human-friendly format. These functions are important tools when dealing with IP addresses in lower-level network programming.
In socket programming, address conversion functions are important for handling internet addresses. Functions like `inet_pton()` (presentation to network) and `inet_ntop()` (network to presentation) are frequently used. `inet_pton()` function converts an IP address in human-friendly format (IPv4 addresses in dotted-decimal notation or IPv6 addresses in hexadecimal notation) to its equivalent binary form. Conversely, `inet_ntop()` function does the reverse, i.e., it converts an IP address in binary form to human-friendly format. These functions are important tools when dealing with IP addresses in lower-level network programming.
Visit the following resources to learn more:

- [@official@inet_pton(3) - Linux Manual Page - man7.org](https://man7.org/linux/man-pages/man3/inet_pton.3.html)
- [@official@inet_pton - The Open Group Base Specifications](https://pubs.opengroup.org/onlinepubs/009619199/inet_pton.htm)
- [@official@inet_pton(3) - OpenBSD Manual Pages](https://man.openbsd.org/inet_pton.3)
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# AI

Artificial Intelligence (AI) in server side game development refers to the use of algorithms and computational procedures to create systems capable of performing tasks that would require human intelligence. Such tasks include learning and adapting to change, recognizing speech, or even making decisions. In game development, AI is often used to give non-player characters (NPCs) their own 'intelligence', making them even more life-like. This could be as simple as the ability to follow a player around in an environment, or as complex as crafting strategies for combat. AI can also be used to generate procedurally or dynamically generated content, creating potentially infinite unique experiences for the player. AI in games is often programmed in a way where it must strike a balance between appearing intelligent and providing an enjoyable experience for the player.
Artificial Intelligence (AI) in server side game development refers to the use of algorithms and computational procedures to create systems capable of performing tasks that would require human intelligence. Such tasks include learning and adapting to change, recognizing speech, or even making decisions. In game development, AI is often used to give non-player characters (NPCs) their own 'intelligence', making them even more life-like. This could be as simple as the ability to follow a player around in an environment, or as complex as crafting strategies for combat. AI can also be used to generate procedurally or dynamically generated content, creating potentially infinite unique experiences for the player. AI in games is often programmed in a way where it must strike a balance between appearing intelligent and providing an enjoyable experience for the player.
Visit the following resources to learn more:

- [@article@Behavior Tree (Artificial Intelligence) - Wikipedia](https://en.wikipedia.org/wiki/Behavior_tree_(artificial_intelligence,_robotics_and_control))
- [@article@How to Create Smarter Enemies with Behavior Trees - Game Developer](https://www.gamedeveloper.com/programming/how-to-create-smarter-enemies-with-behavior-trees)
- [@official@NVIDIA Game Development](https://developer.nvidia.com/industries/game-development)
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# Akka (Java)

Akka is an open-source toolkit and runtime simplifying the construction of concurrent and distributed applications on the JVM. It implements the Actor Model for handling concurrency, allowing developers to create systems that can handle high volumes of transactions in a distributed environment. Yet, Akka is not only about Actors, it features other tools for building reactive applications, including Event Sourcing, CQRS, Cluster Sharding, and Distributed Data. Written in Scala and providing APIs in both Scala and Java, Akka powers numerous business-critical systems in sectors such as finance, tech, streaming, and others.
Akka is an open-source toolkit and runtime simplifying the construction of concurrent and distributed applications on the JVM. It implements the Actor Model for handling concurrency, allowing developers to create systems that can handle high volumes of transactions in a distributed environment. Yet, Akka is not only about Actors, it features other tools for building reactive applications, including Event Sourcing, CQRS, Cluster Sharding, and Distributed Data. Written in Scala and providing APIs in both Scala and Java, Akka powers numerous business-critical systems in sectors such as finance, tech, streaming, and others.
Visit the following resources to learn more:

- [@official@Akka Documentation](https://doc.akka.io/index.html)
- [@official@Introduction to Actors - Akka Docs](https://doc.akka.io/libraries/akka-core/current/typed/actors.html)
- [@official@Java Akka - Play Framework Documentation](https://www.playframework.com/documentation/2.9.x/JavaAkka)
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# Akka.net (C#)

"Akka.NET" is a toolkit and a runtime for designing concurrent and distributed applications. This technology is directly inspired by the Actor Model concept, implementing its principles to create robust and highly functional server-side applications. Akka.NET allows developers to create systems that are capable of handling millions of messages in a concurrent manner while maintaining high performance. It supports actor-based concurrency, network and cloud distribution, and powerful event sourcing techniques. Building systems with Akka.NET involve not only working with primary actors but also working with different types, including the likes of Persistent actors, FSM (Finite State Machine) actors and more. Please remember, Akka.NET is a part of the broader Akka toolkit, which also includes libraries for Java and Scala.
"Akka.NET" is a toolkit and a runtime for designing concurrent and distributed applications. This technology is directly inspired by the Actor Model concept, implementing its principles to create robust and highly functional server-side applications. Akka.NET allows developers to create systems that are capable of handling millions of messages in a concurrent manner while maintaining high performance. It supports actor-based concurrency, network and cloud distribution, and powerful event sourcing techniques. Building systems with Akka.NET involve not only working with primary actors but also working with different types, including the likes of Persistent actors, FSM (Finite State Machine) actors and more. Please remember, Akka.NET is a part of the broader Akka toolkit, which also includes libraries for Java and Scala.
Visit the following resources to learn more:

- [@official@Akka.NET Tutorial Overview](https://getakka.net/articles/intro/getting-started/tutorial-overview.html)
- [@official@Akka.NET Home - Documentation](https://getakka.net/)
- [@article@Our First Akka.NET Application - Petabridge Bootcamp](https://petabridge.com/bootcamp/lessons/unit-0/first-akkadotnet-app/)
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# Amazon ML

Amazon Machine Learning (Amazon ML) is a robust, cloud-based service that makes it easy for developers of all skill levels to use machine learning technology. It provides visualization tools and wizards that guide you through the process of creating machine learning (ML) models without needing to learn complex ML algorithms and technology. With Amazon ML, you can create and train your data models, and then use those models to make predictions. These predictions can be used to implement sophisticated applications, such as user trend detection, sentiment analysis, fraud detection, and much more.
Amazon Machine Learning (Amazon ML) is a robust, cloud-based service that makes it easy for developers of all skill levels to use machine learning technology. It provides visualization tools and wizards that guide you through the process of creating machine learning (ML) models without needing to learn complex ML algorithms and technology. With Amazon ML, you can create and train your data models, and then use those models to make predictions. These predictions can be used to implement sophisticated applications, such as user trend detection, sentiment analysis, fraud detection, and much more.
Visit the following resources to learn more:

- [@official@Amazon SageMaker AI Documentation](https://docs.aws.amazon.com/sagemaker/)
- [@official@Getting Started with Machine Learning on Amazon SageMaker AI](https://aws.amazon.com/sagemaker/ai/getting-started/)
- [@article@Training AI Models for Skill-Based Matchmaking Using Amazon SageMaker - AWS Games Blog](https://aws.amazon.com/blogs/gametech/training-ai-models-for-skill-based-matchmaking-using-amazon-sagemaker-ai/)
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ Visit the following resources to learn more:

- [@official@Apache Kafka Quickstart](https://kafka.apache.org/quickstart)
- [@video@Apache Kafka Fundamentals](https://www.youtube.com/watch?v=B5j3uNBH8X4)
- [@feed@Explore top posts about Kafka](https://app.daily.dev/tags/kafka?ref=roadmapsh)
- [@article@Explore top posts about Kafka](https://app.daily.dev/tags/kafka?ref=roadmapsh)
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ Visit the following resources to learn more:

- [@official@ApacheSpark](https://spark.apache.org/documentation.html)
- [@article@Spark By Examples](https://sparkbyexamples.com)
- [@feed@Explore top posts about Apache Spark](https://app.daily.dev/tags/spark?ref=roadmapsh)
- [@article@Explore top posts about Apache Spark](https://app.daily.dev/tags/spark?ref=roadmapsh)
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# API

API (Application Programming Interface) is a set of rules and protocols implemented for building and integrating software applications. APIs enable two different software applications to communicate and work together. They work as a bridge connecting two software systems, enabling them to exchange information and execute functions. In the context of server-side game development and socket programming, APIs may be used to handle connection establishment, data transmission, and other necessary network communication operations. APIs can be customized or built based on standard protocols such as HTTP for web services, or TCP/UDP for lower-level socket communications.
API (Application Programming Interface) is a set of rules and protocols implemented for building and integrating software applications. APIs enable two different software applications to communicate and work together. They work as a bridge connecting two software systems, enabling them to exchange information and execute functions. In the context of server-side game development and socket programming, APIs may be used to handle connection establishment, data transmission, and other necessary network communication operations. APIs can be customized or built based on standard protocols such as HTTP for web services, or TCP/UDP for lower-level socket communications.
Visit the following resources to learn more:

- [@official@Web API Design Best Practices - Microsoft Azure Architecture](https://learn.microsoft.com/en-us/azure/architecture/best-practices/api-design)
- [@article@Best Practices for REST API Design - Stack Overflow](https://stackoverflow.blog/2020/03/02/best-practices-for-rest-api-design/)
- [@article@API Architecture Patterns and Best Practices - LogicMonitor](https://www.logicmonitor.com/deep-dive/api-monitoring-tools/api-architecture)
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# ARP

**ARP** or **Address Resolution Protocol** is a protocol used to map an IP address to a physical address on the network, such as a MAC address. A device uses ARP when it needs to forward a packet to another device on the same network but only has the IP address. ARP broadcasts a request packet to all devices on the local network to find who owns the IP address. The device with the matching IP address replies with its MAC address. ARP maintains a cache of previously resolved addresses to minimize traffic. It is an essential protocol in network communication, but it also exposes certain security vulnerabilities like ARP spoofing.
**ARP** or **Address Resolution Protocol** is a protocol used to map an IP address to a physical address on the network, such as a MAC address. A device uses ARP when it needs to forward a packet to another device on the same network but only has the IP address. ARP broadcasts a request packet to all devices on the local network to find who owns the IP address. The device with the matching IP address replies with its MAC address. ARP maintains a cache of previously resolved addresses to minimize traffic. It is an essential protocol in network communication, but it also exposes certain security vulnerabilities like ARP spoofing.
Visit the following resources to learn more:

- [@article@ARP (Address Resolution Protocol) Explained - NetworkLessons](https://networklessons.com/ip-services/arp-address-resolution-protocol-explained)
- [@article@What is ARP? Address Resolution Protocol Explained - Splunk](https://www.splunk.com/en_us/blog/learn/address-resolution-protocol-arp.html)
- [@article@Address Resolution Protocol - Wikipedia](https://en.wikipedia.org/wiki/Address_Resolution_Protocol)
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# Async-await (C#)

`Async/await` are extensions of Promises in JavaScript that allow for handling asynchronous code in a more synchronous manner. Using `async` keyword before a function, means the function returns a Promise. On the other hand, `await` keyword is used to pause async function execution until a Promise is resolved or rejected, and to resume execution of the async function after fulfillments. Before the `await` keyword, the Promise resolves to the actual value. Notably, `await` only works within async function block.
`Async/await` are extensions of Promises in JavaScript that allow for handling asynchronous code in a more synchronous manner. Using `async` keyword before a function, means the function returns a Promise. On the other hand, `await` keyword is used to pause async function execution until a Promise is resolved or rejected, and to resume execution of the async function after fulfillments. Before the `await` keyword, the Promise resolves to the actual value. Notably, `await` only works within async function block.
Visit the following resources to learn more:

- [@official@Asynchronous Programming in C# - Microsoft Learn](https://learn.microsoft.com/en-us/dotnet/csharp/asynchronous-programming/)
- [@article@C# Async/Await Explained: Complete Guide with Examples - NDepend](https://blog.ndepend.com/c-async-await-explained/)
- [@article@Beginner's Guide to Async and Await in C# - Zero To Mastery](https://zerotomastery.io/blog/async-await-csharp/)
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# Asynchronous

**Asynchronous programming** is a programming paradigm where the execution of functions or routines does not wait for the activities within them to complete before moving on to subsequent ones. This allows for tasks to be processed independently, making the most of system resources. When a function contains an operation such as I/O, database access, or network communication, which may take a long time to complete, this function is wrapped into a future or promise and sent for execution. Meanwhile, the core program continues to run. When the wrapped function gets executed, a callback function is used to notify that the computation or I/O is complete. This forms the core of non-blocking or asynchronous execution. It is widely used in server-side programming, game development, and any scenario where I/O latency or user experience is a concern. Notably, it is at the core of Node.js and many modern web frameworks.
**Asynchronous programming** is a programming paradigm where the execution of functions or routines does not wait for the activities within them to complete before moving on to subsequent ones. This allows for tasks to be processed independently, making the most of system resources. When a function contains an operation such as I/O, database access, or network communication, which may take a long time to complete, this function is wrapped into a future or promise and sent for execution. Meanwhile, the core program continues to run. When the wrapped function gets executed, a callback function is used to notify that the computation or I/O is complete. This forms the core of non-blocking or asynchronous execution. It is widely used in server-side programming, game development, and any scenario where I/O latency or user experience is a concern. Notably, it is at the core of Node.js and many modern web frameworks.
# Visit the following resources to learn more:

- [@article@Asynchronous Programming in Python - Velotio](https://www.velotio.com/engineering-blog/asynchronous-programming-python-an-introduction)
- [@article@C++ Coroutines for Async Development - Whole Tomato](https://www.wholetomato.com/blog/cpp-coroutines-async-development/)
- [@official@Asynchronous JavaScript - MDN Web Docs](https://developer.mozilla.org/en-US/docs/Learn_web_development/Extensions/Async_JS)
Loading