Skip to content

Commit

Permalink
updated docs
Browse files Browse the repository at this point in the history
  • Loading branch information
deepaksood619 committed Jan 11, 2024
1 parent 4d5b022 commit 731bb5b
Show file tree
Hide file tree
Showing 12 changed files with 37 additions and 39 deletions.
6 changes: 3 additions & 3 deletions docs/cloud/aws/aws-sns.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ Amazon Simple Notification Service (Amazon SNS) sends notifications two ways, A2

## Topic types

### Standard Topics 
### Standard Topics

Standard topics can be used in many scenarios, as long as your application can process messages that arrive more than once and out of order, for example: fanning out messages to media encoding, fraud detection, tax calculation, search index, and critical alerting applications.

Expand All @@ -27,11 +27,11 @@ Standard topics can be used in many scenarios, as long as your application can p

**Multiple subscription types**: Messages can be delivered to application-to-application (A2A) endpoints (Amazon SQS, Amazon Kinesis Data Firehose, AWS Lambda, HTTPS) as well as application-to-person (A2P) endpoints (SMS, mobile push, and email).

**Message fanout**: Each account can support 100,000 Standard topics and each topic supports up to 12.5M subscriptions.
**Message fanout**: Each account can support 100,000 Standard topics and each topic supports up to 12.5M subscriptions.

### FIFO Topics

FIFO topics are designed to enhance messaging between applications when the order of operations and events is critical, or where duplicates can't be tolerated, for example: fanning out messages to bank transaction logging, stock monitoring, flight tracking, inventory management, and price update applications.
FIFO topics are designed to enhance messaging between applications when the order of operations and events is critical, or where duplicates can't be tolerated, for example: fanning out messages to bank transaction logging, stock monitoring, flight tracking, inventory management, and price update applications.

**High throughput**: FIFO topics support up to 300 messages per second or 10 MB per second per FIFO topic (whichever comes first).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,28 +11,37 @@ Uses statements that change a program's state

## Declarative (does not state the order in which operations execute)

Focuses on *what*the program should accomplish without specifying *how*the program should achieve the result.
Focuses on *what* the program should accomplish without specifying *how* the program should achieve the result.

- Functional
- Logic

Example - SQL is a declarative language, we tell to give data and program automatically finds a way to give that data.

## Symbolic

In [computer programming](https://en.wikipedia.org/wiki/Computer_programming "Computer programming")**symbolic programming** is a [programming paradigm](https://en.wikipedia.org/wiki/Programming_paradigm "Programming paradigm") in which the program can manipulate its own formulas and program components as if they were plain data.

Through symbolic programming, complex processes can be developed that build other more intricate processes by combining smaller units of logic or functionality. Thus, such programs can effectively modify themselves and appear to "learn", which makes them better suited for applications such as [artificial intelligence](https://en.wikipedia.org/wiki/Artificial_intelligence "Artificial intelligence")[expert systems](https://en.wikipedia.org/wiki/Expert_systems "Expert systems")[natural language processing](https://en.wikipedia.org/wiki/Natural_language_processing "Natural language processing"), and computer games.

Languages that support symbolic programming include [homoiconic](https://en.wikipedia.org/wiki/Homoiconic "Homoiconic") languages such as [Wolfram Language](https://en.wikipedia.org/wiki/Wolfram_Language "Wolfram Language")[Lisp](https://en.wikipedia.org/wiki/LISP "LISP")[Prolog](https://en.wikipedia.org/wiki/Prolog "Prolog"), and [Julia](https://en.wikipedia.org/wiki/Julia_(programming_language) "Julia (programming language)").

[Symbolic programming - Wikipedia](https://en.wikipedia.org/wiki/Symbolic_programming)

## Others

- Contract-oriented programming language (for writing smart contracts)
- Solidity (used in Ethereum)

## Imperative vs Declarative Programming

When you need to do something, there is always thewhatand thehowaspects of it. What exactly needs to be done and how do we do it.
When you need to do something, there is always the what and the how aspects of it. What exactly needs to be done and how do we do it.

**Imperative programming is about the how. Declarative programming is about the what**

An imperative approach represents a list of steps. Do this first, then do that, and after that do something else. For example:Go over a list of numbers one by one and for every one add its value to a running sum.
An imperative approach represents a list of steps. Do this first, then do that, and after that do something else. For example: Go over a list of numbers one by one and for every one add its value to a running sum.

A declarative approach represents what we have and what we need. For example:We have a list of numbers and we need the sum of those numbers.The imperative language is closer to the computers of today because they only know how to execute instructions. The declarative language is closer to how we think and command. Get it done, please. Somehow!
A declarative approach represents what we have and what we need. For example: We have a list of numbers and we need the sum of those numbers. The imperative language is closer to the computers of today because they only know how to execute instructions. The declarative language is closer to how we think and command. Get it done, please. Somehow!

The good news is computer languages have evolved. Computer languages offer declarative ways to do the needed imperative computer instructions. Just as cars have evolved from manual stick shift into automatic and self-driving ones!

Expand Down
6 changes: 3 additions & 3 deletions docs/devops/ansible/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,19 +32,19 @@ In contrast with popular configuration management software - such as [Chef](http

Logical grouping of servers which are to be managed by a sysadmin

![image](../../../media/DevOps-Others-Ansible-image1.jpg)
![image](../../media/DevOps-Others-Ansible-image1.jpg)

- Ansible Playbooks

Collection of commands that a sysadmin would run on servers mentioned in Ansible Inventory

![image](../../../media/DevOps-Others-Ansible-image2.jpg)
![image](../../media/DevOps-Others-Ansible-image2.jpg)

- Ansible Modules

In-built packages which are available for a sysadmin to use in Ansible Playbooks and then run them on the servers which are mentioned in Ansible Inventory

![image](../../../media/DevOps-Others-Ansible-image3.jpg)
![image](../../media/DevOps-Others-Ansible-image3.jpg)

## Design Principles

Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,15 @@
# Cluster Administration

1. Cluster Administration Overview

2. Certificates

3. Cloud Providers

4. Managing Resources

5. Cluster Networking

6. Logging Architecture

7. Configuring kubelet Garbage Collection

8. Federation

9. Proxies in Kubernetes

10. Controller manager metrics

11. Installing Addons

## Federation
Expand All @@ -31,7 +21,6 @@ Kubernetes Cluster Federation (KubeFed for short) allows you to coordinate the c
The federated clusters can achieve this by doing the following two things

1. Cross cluster discovery

2. Sync resources across clusters

![image](../../../media/DevOps-Kubernetes-Cluster-Administration-image1.jpg)
Expand Down
2 changes: 1 addition & 1 deletion docs/devops/kubernetes/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
- [Others](services-loadbalancing-and-networking/others)
- [Storage](storage)
- [Configuration](configuration)
- [Cluster Administration](cluster-administration/radme.md)
- [Cluster Administration](devops/kubernetes/cluster-administration/readme.md)
- [Logging Architecture](cluster-administration/logging-architecture)
- [Others](cluster-administration/others)
- [kubectl commands](kubectl-commands)
Expand Down
10 changes: 5 additions & 5 deletions docs/devops/servers/apache-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ The self-regulating MPM Prefork derives its namesake from how it forks or copies

Each idle child process joins a queue to listen for incoming requests. This MPM uses a method called [accept mutex](https://httpd.apache.org/docs/2.4/mod/core.html#mutex) to ensure that only one process listens for and accepts the next TCP request (mutex stands for MUTual EXclusion mechanism). The first idle worker process in the queue acquires the mutex and listens for the next incoming connection. After receiving a connection, it releases the accept mutex by passing it to the next idle process in the queue, and processes the request (during which time it is considered a busy worker). After it finishes processing the request, it joins the queue once again.

![image](../../../media/DevOps-Others-Apache-Server-image1.jpg)
![image](../../media/DevOps-Others-Apache-Server-image1.jpg)

Because this MPM needs a higher number of processes to handle any given number of requests, it is generally more memory-hungry than multi-threaded MPMs like worker and event. For this reason, if you are using mod_php you should consider switching over to [PHP-FPM](https://wiki.apache.org/httpd/PHP-FPM) so that you can use the worker or event MPM instead.

Expand All @@ -122,7 +122,7 @@ Like the prefork MPM, the worker MPM usesaccept mutexto designate which thread w

The listener thread that accepts the mutex will listen for the next incoming request, accept the connection, and release the accept mutex so that another listener thread can shepherd the next incoming request. The listener thread then passes the socket to an idle worker thread within its process.

![image](../../../media/DevOps-Others-Apache-Server-image2.jpg)
![image](../../media/DevOps-Others-Apache-Server-image2.jpg)

Unlike the prefork MPM, the worker MPM enables each child process to serve more than one request at a time, by utilizing multiple threads. Because you only need one thread per connection, instead of forking one process per connection, this MPM tends to be more memory-efficient than the prefork MPM.

Expand All @@ -148,7 +148,7 @@ In the event MPM, a worker thread can write a request to the client, and then pa

If the KeepAliveTimeout is reached before any activity occurs on the socket, the listener thread will close the connection. Also, if any listener thread detects that all worker threads within its process are busy, it will close keep-alive connections, forcing clients to create new connections that can be processed more quickly by other processes' worker threads (although, for the sake of simplicity, we do not show this in the example below). Because the dedicated listener thread helps monitor the lifetime of each keep-alive connection, worker threads that would otherwise have been blocked (waiting for further activity) are instead free to address other active requests.

![image](../../../media/DevOps-Others-Apache-Server-image3.jpg)
![image](../../media/DevOps-Others-Apache-Server-image3.jpg)

There are a number of other experimental MPMs such as Threadpool, Perchild, and Leader.

Expand Down Expand Up @@ -196,8 +196,8 @@ MaxConnectionsPerChild 10000

- **StartServers** is the number of child processes created upon starting Apache.
- [**MaxRequestWorkers**](https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestworkers)(orMaxClientsin versions prior to 2.4) is the maximum number of connections that can be open at one time. Once this limit has been reached, any additional incoming connections are queued. The maximum size of the queue is determined by theListenBacklogsetting (by default 511, though it can be smaller depending on your OS; on Linux, the queue length is limited bynet.core.somaxconn).
- **MinSpareServers**/MinSpareThreadsandMaxSpareServers/MaxSpareThreadsrefer to the minimum and maximum number of child processes (in the prefork MPM) or worker threads (in the worker and event MPMs) that should be idle at any one time. If the number of idle processes/threads does not fall within these bounds, the parent process will kill or spawn new processes/threads accordingly.
- **MaxConnectionsPerChild**(known asMaxRequestsPerChildprior to version 2.4) determines the total number of connections each child process can serve before it is restarted, which can be important for guarding against [memory leaks](https://www.datadoghq.com/blog/monitoring-apache-web-server-performance/#toc-host-level-resource-metrics) when using certain modules like mod_php.
- **MinSpareServers** / MinSpareThreads and MaxSpareServers / MaxSpareThreads refer to the minimum and maximum number of child processes (in the prefork MPM) or worker threads (in the worker and event MPMs) that should be idle at any one time. If the number of idle processes/threads does not fall within these bounds, the parent process will kill or spawn new processes/threads accordingly.
- **MaxConnectionsPerChild** (known as MaxRequestsPerChild prior to version 2.4) determines the total number of connections each child process can serve before it is restarted, which can be important for guarding against [memory leaks](https://www.datadoghq.com/blog/monitoring-apache-web-server-performance/#toc-host-level-resource-metrics) when using certain modules like mod_php.

- **Backlog Queue**
- Backlog Queue settingnet.core.somaxconnfrom128to32768
Expand Down
2 changes: 1 addition & 1 deletion docs/devops/servers/nginx/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale

https://www.aosabook.org/en/nginx.html

![image](../../../../media/DevOps-Others-NGINX-image1.jpg)
![image](../../../media/DevOps-Others-NGINX-image1.jpg)

## nginx 3rd party modules

Expand Down
4 changes: 2 additions & 2 deletions docs/devops/servers/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
- [Apache Server](devops/servers/apache-server.md)
- [Gunicorn](devops/servers/gunicorn.md)
- [NGINX](devops/servers/nginx/readme.md)
- [NGINX Configs](devops/servers/nginx/configs.md)
- [NGINX Configs](devops/servers/nginx/configs.md)

## HTTPD (HTTP Daemon)

Expand Down Expand Up @@ -36,7 +36,7 @@ The application server gets those fancy requests and converts the information fr
7. WildFly (JBoss) written in Java
8. Microsoft IIS (Internet Information Services)

![image](../../../media/DevOps-Others-Servers-image1.jpg)
![image](../../media/DevOps-Others-Servers-image1.jpg)

## Proxy Server

Expand Down
13 changes: 7 additions & 6 deletions docs/devops/terraform/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ Configuration files describe to Terraform the components needed to run a single

The infrastructure Terraform can manage includes low-level components such as compute instances, storage, and networking, as well as high-level components such as DNS entries, SaaS features, etc.

Terraform is a tool which makes it easy to write version-controlled infrastructure code. You can use it to orchestrate the infrastructure on more than 100 different service providers like AWS, Alicloud, GCP, Azure, OpenStack and many more.

## Key Features

### Infrastructure as Code
Expand All @@ -35,10 +37,6 @@ Terraform builds a graph of all your resources, and parallelizes the creation an

Complex changesets can be applied to your infrastructure with minimal human interaction. With the previously mentioned execution plan and resource graph, you know exactly what Terraform will change and in what order, avoiding many possible human errors.

## What is Terraform?

Terraform is a tool which makes it easy to write version-controlled infrastructure code. You can use it to orchestrate the infrastructure on more than 100 different service providers like AWS, Alicloud, GCP, Azure, OpenStack and many more.

## Is Terraform a language?

No. Terraform is a tool, which in turn uses Hashicorp Configuration Language (HCL) to describe your infrastructure as a code. HCL is a declarative language, defining the desired state and not the steps needed to be there.
Expand All @@ -49,7 +47,7 @@ https://github.com/hashicorp/hcl

- **Scope -** Confirm what resources need to be created for a given project.
- **Author -** Create the configuration file in HCL based on the scoped parameters
- **Initialize -** Run `terraform init` in the project directory with the configuration files. This will download the correct provider plug-ins for the project.
- **Initialize -** Run `terraform init` in the project directory with the configuration files. This will download the correct provider plugins for the project.
- **Plan -** Run `terraform plan` to verify creation process
- **Apply** - Run `terraform apply` to create real resources as well as state file that compares future changes in your configuration files to what actually exists in your deployment environment.

Expand All @@ -73,7 +71,10 @@ Your entire infrastructure. Defined as code. In about a day

[Gruntwork | DevOps as a Service](https://gruntwork.io/)

## Others - Puppet / AWS CloudFormation
## Others

- Puppet
- AWS CloudFormation

## Terraform vs CloudFormation

Expand Down
1 change: 0 additions & 1 deletion docs/languages/frameworks/android/questions.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,4 +85,3 @@ Yes, an activity can be created without any user interface. These activities are
The broadcast receiver communicates with the operation system messages such as "check whether an internet connection is available," what the battery label should be, etc.

https://www.toptal.com/app/interview-questions

2 changes: 1 addition & 1 deletion docs/languages/frameworks/android/testing.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ https://www.toptal.com/android/testing-like-a-true-green-droid

## Release

### 1. Registration & Development (iOS & Android):
### 1. Registration & Development (iOS & Android)

- Enroll in Apple's Developer Program and Google Play Console as iOS and Android developer
- Code using platform-specific tools: Swift/Obj-C for iOS, and Java/Kotlin for Android
Expand Down
2 changes: 1 addition & 1 deletion docs/languages/frameworks/android/tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,4 +112,4 @@ https://smartlook.github.io/docs/sdk/android
- https://ui.perfetto.dev
- Bluestacks
- Nox Player
- https://github.com/Genymobile/scrcpy
- https://github.com/Genymobile/scrcpy

0 comments on commit 731bb5b

Please sign in to comment.