<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shubham Srivastava</title>
    <description>The latest articles on DEV Community by Shubham Srivastava (@surajvast1).</description>
    <link>https://dev.to/surajvast1</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1210893%2F53dd9d0f-c8c7-4b3e-9384-9578b8de2a86.jpeg</url>
      <title>DEV Community: Shubham Srivastava</title>
      <link>https://dev.to/surajvast1</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/surajvast1"/>
    <language>en</language>
    <item>
      <title>🚀🚀🚀Implementing Redis Functionalities in Node.js Applications 📦</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Thu, 07 Mar 2024 10:50:35 +0000</pubDate>
      <link>https://dev.to/surajvast1/implementing-redis-functionalities-in-nodejs-applications-45g6</link>
      <guid>https://dev.to/surajvast1/implementing-redis-functionalities-in-nodejs-applications-45g6</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;This documentation outlines the process of implementing caching using Redis in a Node.js Express application. Caching data with Redis helps reduce response times and server load by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Storing frequently accessed data in memory&lt;/li&gt;
&lt;li&gt;Optimizing data retrieval by avoiding repetitive requests to external sources&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Node.js installed on your machine&lt;/li&gt;
&lt;li&gt;Basic understanding of JavaScript and Express.js&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Redis Docker Installation
&lt;/h2&gt;

&lt;p&gt;To set up Redis using Docker, follow these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Download and Install Docker&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Visit the &lt;a href="https://www.docker.com/get-started"&gt;official Docker website&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Download Docker for your operating system and follow the installation instructions provided.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Run Redis Container&lt;/strong&gt;: Execute the following command in your terminal to fetch Redis in a Docker container:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; redis-stack &lt;span class="nt"&gt;-p&lt;/span&gt; 6379:6379 &lt;span class="nt"&gt;-p&lt;/span&gt; 8001:8001 redis/redis-stack:latest
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;This command pulls the latest Redis image from Docker Hub and runs it in a detached mode (&lt;code&gt;-d&lt;/code&gt;). It also names the container as &lt;code&gt;redis-stack&lt;/code&gt;, maps the container's port 6379 to the host port 6379 (for Redis), and maps port 8001 to the RedisInsight UI for monitoring Redis data.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgfhsmip5a044yk19or2v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgfhsmip5a044yk19or2v.png" alt="RedisInsight Dashboard" width="800" height="216"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verify Installation:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Check if the Redis container is running by executing:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Access RedisInsight by visiting &lt;code&gt;http://localhost:8001&lt;/code&gt; in your web browser. You should see the RedisInsight dashboard.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Connect to the Redis server using the default connection settings (&lt;code&gt;localhost:6379&lt;/code&gt;). Here's a visual guide on how to connect:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxu3nydl4butr4zqefpfj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxu3nydl4butr4zqefpfj.png" alt="Connect to Redis" width="800" height="111"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;After verifying that the Redis container is running and accessing RedisInsight, proceed with the following steps to interact with Redis:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;a. Run &lt;code&gt;docker ps&lt;/code&gt; to check the container IDs.&lt;/p&gt;

&lt;p&gt;b. Run the following command to access the Redis container shell (replace &lt;code&gt;&amp;lt;container_id&amp;gt;&lt;/code&gt; with the actual container ID):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   docker &lt;span class="nb"&gt;exec&lt;/span&gt; &lt;span class="nt"&gt;-it&lt;/span&gt; &amp;lt;container_id&amp;gt; bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;c. Once inside the container, run the Redis CLI by executing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   redis-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You should now be connected to the Redis server and able to interact with it using the Redis CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;Ensure Redis server is installed and running. Additionally, install required dependencies for your Express application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;express axios ioredis
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Basic Setup
&lt;/h2&gt;

&lt;p&gt;Begin by setting up a basic Express application that listens on a specific port:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://jsonplaceholder.typicode.com/photos&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;9000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Server is running on port &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh1l47h7g1x7ld6lnc5ls.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh1l47h7g1x7ld6lnc5ls.png" alt="redis" width="800" height="506"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Problem Statement
&lt;/h2&gt;

&lt;p&gt;Fetching data from external APIs directly may result in slow response times due to network latency and server load,here as you can see it took 364 millisecond to fetch the data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Solution
&lt;/h2&gt;

&lt;p&gt;Implement caching using Redis to store fetched data temporarily and serve it from the cache for subsequent requests, thereby reducing response times.&lt;/p&gt;

&lt;p&gt;Certainly! Here's the updated documentation with the added points:&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation Steps
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Initialize Redis Client&lt;/strong&gt;
First, create a Redis client to interact with the Redis server. Create a file named &lt;code&gt;client.js&lt;/code&gt; and add the following code:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Redis&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ioredis&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Redis&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
   &lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Implement Caching Logic&lt;/strong&gt;
Modify your route handler to utilize the Redis client for caching. Update your &lt;code&gt;server.js&lt;/code&gt; file with the following code:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;axios&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./client&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

   &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cacheValue&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;to-dos&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
     &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cacheValue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cached value&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
       &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cacheValue&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
     &lt;span class="p"&gt;}&lt;/span&gt;

     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;axios&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
       &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://jsonplaceholder.typicode.com/photos&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
     &lt;span class="p"&gt;);&lt;/span&gt;
     &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;to-dos&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
     &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expire&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;to-dos&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;

   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;9000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Server is running on port &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;port&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp9lskf5on365awtc3im3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp9lskf5on365awtc3im3.png" alt="Image description" width="800" height="513"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Observation of Data Fetching Time&lt;/strong&gt;&lt;br&gt;
After implementing the caching mechanism, you may notice that the initial data fetching time is higher as it involves fetching data from the external API. However, upon subsequent requests, the data fetching time significantly reduces to approximately 37 milliseconds due to the cached data being served from Redis. This demonstrates the effectiveness of caching in reducing response times and improving overall performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Expiration and Renewal&lt;/strong&gt;&lt;br&gt;
Note that the cached data expires after 30 seconds (&lt;code&gt;await client.expire("to-dos", 30)&lt;/code&gt;). Upon expiration, the next request will trigger a fresh data fetch from the external API, refreshing the cache with updated data. This ensures that users receive the most up-to-date information while still benefiting from reduced response times during the cache lifespan.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;By implementing caching with Redis in your Express application, you can significantly improve performance by reducing response times and server load. Caching commonly accessed data helps minimize latency and enhances the overall user experience, especially for frequently accessed resources.&lt;/p&gt;

</description>
      <category>node</category>
      <category>redis</category>
      <category>database</category>
      <category>coding</category>
    </item>
    <item>
      <title>##Redis Rapid Reference: Mastering All Commands with PowerShell 🚀💡✨🔮</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Thu, 07 Mar 2024 09:28:28 +0000</pubDate>
      <link>https://dev.to/surajvast1/redis-rapid-reference-mastering-all-commands-with-powershell-52b1</link>
      <guid>https://dev.to/surajvast1/redis-rapid-reference-mastering-all-commands-with-powershell-52b1</guid>
      <description>&lt;h1&gt;
  
  
  Redis Documentation
&lt;/h1&gt;

&lt;p&gt;Welcome to the Redis documentation! Redis is an open-source, in-memory data structure store used as a database, cache, and message broker. It supports various data structures such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Strings&lt;/li&gt;
&lt;li&gt;Hashes&lt;/li&gt;
&lt;li&gt;Lists&lt;/li&gt;
&lt;li&gt;Sets&lt;/li&gt;
&lt;li&gt;Sorted sets&lt;/li&gt;
&lt;li&gt;Bitmaps&lt;/li&gt;
&lt;li&gt;Hyperloglogs&lt;/li&gt;
&lt;li&gt;Geospatial indexes with radius queries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this documentation, we'll cover basic commands and functionalities of Redis using the provided PowerShell commands. 🚀💡&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;First, make sure you have Docker installed on your system to run Redis in a containerized environment.&lt;/p&gt;

&lt;h3&gt;
  
  
  Install Docker
&lt;/h3&gt;

&lt;p&gt;Follow the instructions on the official Docker website to install Docker on your system: &lt;a href="https://docs.docker.com/get-docker/"&gt;https://docs.docker.com/get-docker/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
Introduction to Redis 🌟&lt;/li&gt;
&lt;li&gt;
SET and GET Commands 🔧&lt;/li&gt;
&lt;li&gt;
SETNX Command 🛡️&lt;/li&gt;
&lt;li&gt;
MSET and MGET Commands 🚀&lt;/li&gt;
&lt;li&gt;
LPUSH and LPOP Commands 🔄&lt;/li&gt;
&lt;li&gt;
SADD Command ➕&lt;/li&gt;
&lt;li&gt;
ZADD and ZRANGE Commands 📊&lt;/li&gt;
&lt;li&gt;
HSET Command 🏷️&lt;/li&gt;
&lt;li&gt;
PUBLISH Command 📢&lt;/li&gt;
&lt;li&gt;
SUBSCRIBE Command 📡&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Introduction to Redis
&lt;/h2&gt;

&lt;p&gt;Redis is a powerful, open-source, in-memory data structure store known for its performance and versatility. It supports various data structures like strings, hashes, lists, sets, and more, making it ideal for caching, real-time analytics, messaging queues, and much more.&lt;/p&gt;

&lt;h2&gt;
  
  
  SET and GET Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SET&lt;/strong&gt;: Set a key to hold a string value.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  127.0.0.1:6379&amp;gt; SET name shubham
  OK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GET&lt;/strong&gt;: Get the value of a key.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  127.0.0.1:6379&amp;gt; GET name
  "shubham"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  SETNX Command
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SETNX&lt;/strong&gt;: Set the value of a key, only if the key does not exist.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  127.0.0.1:6379&amp;gt; SETNX user:4 Ayush NX
  OK
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  MSET and MGET Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;MSET&lt;/strong&gt;: Set multiple keys to multiple values in a single atomic operation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;MGET&lt;/strong&gt;: Retrieve the values of multiple keys.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  127.0.0.1:6379&amp;gt; MSET id:1 "hey" id:2 "hello"
  OK
  127.0.0.1:6379&amp;gt; MGET id:1 id:2
  1) "hey"
  2) "hello"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  LPUSH and LPOP Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;LPUSH&lt;/strong&gt;: Add one or more values to the beginning of a list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LPOP&lt;/strong&gt;: Remove and return the first element of a list.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  127.0.0.1:6379&amp;gt; LPUSH messages hey
  (integer) 1
  127.0.0.1:6379&amp;gt; LPOP messages
  "hey"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  SADD Command
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SADD&lt;/strong&gt;: Add one or more members to a set.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  127.0.0.1:6379&amp;gt; SADD ip 1
  (integer) 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  ZADD and ZRANGE Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ZADD&lt;/strong&gt;: Add one or more members to a sorted set.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ZRANGE&lt;/strong&gt;: Return a range of members in a sorted set.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  127.0.0.1:6379&amp;gt; ZADD no 1 shubham
  (integer) 1
  127.0.0.1:6379&amp;gt; ZRANGE no 0 -1
  1) "shubham"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  HSET Command
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;HSET&lt;/strong&gt;: Set fields in a hash stored at a specified key.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  127.0.0.1:6379&amp;gt; HSET bike:1 model Deimos brand Ergonom type 'Enduro bikes' price 4972
  (integer) 4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  PUBLISH Command
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PUBLISH&lt;/strong&gt;: Publish a message to channels.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  127.0.0.1:6379&amp;gt; PUBLISH notifications hey
  (integer) 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  SUBSCRIBE Command
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;SUBSCRIBE&lt;/strong&gt;: Subscribe to channels.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  127.0.0.1:6379&amp;gt; SUBSCRIBE notifications
  1) "subscribe"
  2) "notifications"
  3) (integer) 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Congratulations! You have successfully learned some basic Redis commands and functionalities. Redis offers a wide range of features for managing and manipulating data efficiently. Explore further to unlock the full potential of Redis in your applications.&lt;/p&gt;

&lt;p&gt;🚀 Happy coding with Redis! 🎉&lt;/p&gt;

</description>
      <category>redis</category>
      <category>coding</category>
      <category>opensource</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>DevOps on AWS - Quick Start Guide🚀</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Fri, 16 Feb 2024 19:33:46 +0000</pubDate>
      <link>https://dev.to/surajvast1/devops-on-aws-quick-start-guide-a01</link>
      <guid>https://dev.to/surajvast1/devops-on-aws-quick-start-guide-a01</guid>
      <description>&lt;p&gt;Welcome to the world of DevOps on Amazon Web Services (AWS)! This guide will walk you through the general desciption of how AWS services are commonly used in DevOps practices. &lt;/p&gt;

&lt;h3&gt;
  
  
  Table of Contents
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;
Key AWS Services

&lt;ul&gt;
&lt;li&gt;EC2 (Elastic Compute Cloud)&lt;/li&gt;
&lt;li&gt;VPC (Virtual Private Cloud)&lt;/li&gt;
&lt;li&gt;EBS (Elastic Block Store)&lt;/li&gt;
&lt;li&gt;S3 (Simple Storage Service)&lt;/li&gt;
&lt;li&gt;IAM (Identity and Access Management)&lt;/li&gt;
&lt;li&gt;CloudWatch&lt;/li&gt;
&lt;li&gt;Lambda&lt;/li&gt;
&lt;li&gt;AWS Code Services&lt;/li&gt;
&lt;li&gt;AWS Config&lt;/li&gt;
&lt;li&gt;Billing / Costing&lt;/li&gt;
&lt;li&gt;AWS KMS (Key Management Service)&lt;/li&gt;
&lt;li&gt;CloudTrail&lt;/li&gt;
&lt;li&gt;Amazon EKS (Elastic Kubernetes Service)&lt;/li&gt;
&lt;li&gt;ELK (Elasticsearch, Logstash, Kibana)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;DevOps practices play a crucial role in ensuring seamless collaboration between development and operations teams. AWS provides a comprehensive suite of services tailored to meet the demands of modern DevOps workflows. This guide aims to familiarize you with these AWS services and their relevance to DevOps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key AWS Services
&lt;/h3&gt;

&lt;h4&gt;
  
  
  EC2 (Elastic Compute Cloud)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;EC2 offers resizable compute capacity in the cloud.&lt;/li&gt;
&lt;li&gt;Launch virtual servers (instances) tailored to your needs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  VPC (Virtual Private Cloud)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Create isolated virtual networks with customizable IP ranges.&lt;/li&gt;
&lt;li&gt;Define subnets, routing tables, and network gateways.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  EBS (Elastic Block Store)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Persistent block-level storage volumes for EC2 instances.&lt;/li&gt;
&lt;li&gt;Choose from various volume types to suit your requirements.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  S3 (Simple Storage Service)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Object storage for storing and retrieving data.&lt;/li&gt;
&lt;li&gt;Highly scalable, durable, and secure.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  IAM (Identity and Access Management)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Manage access to AWS resources securely.&lt;/li&gt;
&lt;li&gt;Create users, groups, and roles with fine-grained permissions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  CloudWatch
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Monitor AWS resources and applications.&lt;/li&gt;
&lt;li&gt;Collect metrics, monitor logs, and set alarms.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Lambda
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Run code without provisioning or managing servers.&lt;/li&gt;
&lt;li&gt;Support for multiple programming languages.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  AWS Code Services
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;CI/CD pipeline automation with CodePipeline.&lt;/li&gt;
&lt;li&gt;Code compilation and testing with CodeBuild.&lt;/li&gt;
&lt;li&gt;Automated deployment with CodeDeploy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  AWS Config
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Detailed inventory of AWS resources and configurations.&lt;/li&gt;
&lt;li&gt;Continuous monitoring for compliance and auditing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Billing / Costing
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Tools for managing and optimizing costs.&lt;/li&gt;
&lt;li&gt;Analyze spending and set budgets.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  AWS KMS (Key Management Service)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Create and control cryptographic keys for encryption.&lt;/li&gt;
&lt;li&gt;Integrate with other AWS services for data security.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  CloudTrail
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Record API activities for audit and compliance.&lt;/li&gt;
&lt;li&gt;Store logs for analysis and troubleshooting.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Amazon EKS (Elastic Kubernetes Service)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Managed Kubernetes service for containerized applications.&lt;/li&gt;
&lt;li&gt;Simplifies deployment, management, and scaling.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  ELK (Elasticsearch, Logstash, Kibana)
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Open-source stack for log management and analytics.&lt;/li&gt;
&lt;li&gt;Indexing, searching, visualization, and analysis of logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🛠️🔍&lt;/p&gt;

</description>
      <category>devops</category>
      <category>webdev</category>
      <category>aws</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Advance Shell Scripting (1-100)🚀</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Tue, 13 Feb 2024 21:09:02 +0000</pubDate>
      <link>https://dev.to/surajvast1/advance-shell-script-1-100-5756</link>
      <guid>https://dev.to/surajvast1/advance-shell-script-1-100-5756</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;This documentation provides an overview and examples of various commands and constructs commonly used in Unix/Linux environments for managing processes, manipulating data, and handling conditions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Commands
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;df&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;df&lt;/code&gt; command is used to display disk space usage on Unix/Linux systems.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;df&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkl985ig4pkf1mc8ftbms.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkl985ig4pkf1mc8ftbms.png" alt="df command" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;nproc&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;nproc&lt;/code&gt; command prints the number of processing units available to the current process.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;nproc&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbs1u2w65crk1znzxatey.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbs1u2w65crk1znzxatey.png" alt="nproc command" width="800" height="123"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;top&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;top&lt;/code&gt; command displays real-time information about running processes, system load, and CPU usage.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  top
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjk2t2hl91p2kbi32daf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxjk2t2hl91p2kbi32daf.png" alt="top command" width="800" height="498"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;ps&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;ps&lt;/code&gt; command is used to display information about processes.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  ps &lt;span class="nt"&gt;-ef&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqjjzmvpfrbe7f3k8bhv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foqjjzmvpfrbe7f3k8bhv.png" alt="ps command" width="800" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;grep&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;grep&lt;/code&gt; command is used to search for specific patterns within files or output.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"amazon"&lt;/span&gt; /path/to/file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk82ooq60abhlaty58scd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk82ooq60abhlaty58scd.png" alt="grep command" width="800" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;curl&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;curl&lt;/code&gt; command is used to transfer data to or from a server.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  curl https://example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;find&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;find&lt;/code&gt; command is used to search for files or directories in a directory hierarchy.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  find / &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s2"&gt;"filename"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Special Commands and Constructs
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;sudo&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;sudo&lt;/code&gt; command is used to execute commands with elevated privileges.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;sudo &lt;/span&gt;find / &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s2"&gt;"filename"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;set&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;set&lt;/code&gt; command is used to set shell options.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="c"&gt;# exit the script when error&lt;/span&gt;
  &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; &lt;span class="c"&gt;# debug mode&lt;/span&gt;
  &lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-x&lt;/span&gt; &lt;span class="c"&gt;# debug mode&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;shell Script :&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff1tq0vzjmmh7pcgdocwt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff1tq0vzjmmh7pcgdocwt.png" alt="set command" width="617" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabtcpru37qmcjrum4r4k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fabtcpru37qmcjrum4r4k.png" alt="set command" width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Certainly! Below are examples demonstrating the usage of &lt;code&gt;set -e&lt;/code&gt;, &lt;code&gt;set -x&lt;/code&gt;, and &lt;code&gt;set -o&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example 1: &lt;code&gt;set -e&lt;/code&gt; (Exit on Error)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Enable exit on error&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt;

&lt;span class="c"&gt;# Command that might fail&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; /nonexistent_directory

&lt;span class="c"&gt;# This line won't be executed if the previous command fails&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"This won't be printed"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, if the &lt;code&gt;ls /nonexistent_directory&lt;/code&gt; command fails (since the directory doesn't exist), the script will terminate immediately due to &lt;code&gt;set -e&lt;/code&gt;, preventing the subsequent echo command from executing.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example 2: &lt;code&gt;set -x&lt;/code&gt; (Debug Mode)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Enable debug mode&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-x&lt;/span&gt;

&lt;span class="c"&gt;# Commands to be debugged&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Debug mode enabled"&lt;/span&gt;
&lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-l&lt;/span&gt; /etc/passwd
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Debug mode disabled"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When this script runs, each command will be printed to the terminal before it is executed, allowing the user to see the commands being run. This is useful for troubleshooting and understanding the flow of execution.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example 3: &lt;code&gt;set -o&lt;/code&gt; (Options)
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Enable shell options&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; nounset &lt;span class="c"&gt;# Treat unset variables as errors&lt;/span&gt;
&lt;span class="nb"&gt;set&lt;/span&gt; &lt;span class="nt"&gt;-o&lt;/span&gt; errexit &lt;span class="c"&gt;# Equivalent to set -e, exit on error&lt;/span&gt;

&lt;span class="c"&gt;# Undefined variable, will trigger an error&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="nv"&gt;$undefined_variable&lt;/span&gt;

&lt;span class="c"&gt;# This line won't be executed due to errexit option&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"This won't be printed"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, &lt;code&gt;set -o nounset&lt;/code&gt; ensures that using undefined variables will result in an error. Additionally, &lt;code&gt;set -o errexit&lt;/code&gt; is equivalent to &lt;code&gt;set -e&lt;/code&gt;, causing the script to exit immediately if any command fails.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;if else&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Conditional statements in Unix/Linux are implemented using the &lt;code&gt;if else&lt;/code&gt; construct.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt;expression]&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
      &lt;/span&gt;command1
      command2
  &lt;span class="k"&gt;else
      &lt;/span&gt;command3
  &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Advanced Usage
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;code&gt;curl&lt;/code&gt; and &lt;code&gt;grep&lt;/code&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Combining &lt;code&gt;curl&lt;/code&gt; and &lt;code&gt;grep&lt;/code&gt; can be useful to filter specific content from web responses.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  curl https://example.com | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"Error"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faktu3srfq7ts0d95kxsp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faktu3srfq7ts0d95kxsp.png" alt="curl and grep command" width="800" height="219"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Pipeline Usage
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Unix/Linux commands can be chained together using pipes (&lt;code&gt;|&lt;/code&gt;) for more complex operations.&lt;/li&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  ./tst.sh | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"1"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;This documentation provides a brief overview and examples of common Unix/Linux commands, special constructs, and their usage in various scenarios. Experimenting with these commands and constructs will help users become proficient in Unix/Linux system administration and scripting.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>cloud</category>
      <category>linux</category>
      <category>shell</category>
    </item>
    <item>
      <title># Comprehensive Guide to Shell Scripting (0-1)🚀</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Sun, 21 Jan 2024 20:10:29 +0000</pubDate>
      <link>https://dev.to/surajvast1/-comprehensive-guide-to-shell-scripting-0-1-4j2g</link>
      <guid>https://dev.to/surajvast1/-comprehensive-guide-to-shell-scripting-0-1-4j2g</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Welcome to the exciting world of shell scripting! This comprehensive guide will take you from the fundamentals to advanced concepts, helping you automate tasks on Linux environments using shell scripts. 🐚&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Creating and Viewing Files&lt;/li&gt;
&lt;li&gt;Understanding Commands&lt;/li&gt;
&lt;li&gt;Executing Shell Scripts&lt;/li&gt;
&lt;li&gt;Managing Permissions&lt;/li&gt;
&lt;li&gt;Useful Commands&lt;/li&gt;
&lt;li&gt;Example: Basic Shell Script&lt;/li&gt;
&lt;li&gt;Shell Scripting Roles&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Creating and Viewing Files
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To &lt;strong&gt;create a file&lt;/strong&gt;, use the &lt;code&gt;touch&lt;/code&gt; command: &lt;code&gt;touch filename&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Shell scripts typically have the extension &lt;code&gt;.sh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;ls&lt;/code&gt; to list files and directories.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ls -ltr&lt;/code&gt; sorts files by modification time.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Understanding Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Use &lt;code&gt;man &amp;lt;command&amp;gt;&lt;/code&gt; to get a manual about a command.&lt;/li&gt;
&lt;li&gt;Editing files: Use &lt;code&gt;vi&lt;/code&gt; to open a file, &lt;code&gt;i&lt;/code&gt; to insert, and &lt;code&gt;:wq!&lt;/code&gt; to save and exit.&lt;/li&gt;
&lt;li&gt;The first line in a shell script should contain the shebang (&lt;code&gt;#!/bin/bash&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Executing Shell Scripts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;To execute a shell script: &lt;code&gt;sh filename.sh&lt;/code&gt; or &lt;code&gt;./filename.sh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Permissions: Use &lt;code&gt;chmod&lt;/code&gt; to grant permissions. Example: &lt;code&gt;chmod 777 filename.sh&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Permissions include read (4), write (2), and execute (1).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Managing Permissions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;chmod 444 filename&lt;/code&gt; gives read access only.&lt;/li&gt;
&lt;li&gt;Security: Use &lt;code&gt;chmod&lt;/code&gt; with root, group, and user access.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Useful Commands
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;history&lt;/code&gt;: View executed commands.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pwd&lt;/code&gt;: Know the current directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mkdir&lt;/code&gt;: Create a directory.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd&lt;/code&gt;: Change directory.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Example: Basic Shell Script
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Creating a folder&lt;/span&gt;
&lt;span class="nb"&gt;mkdir &lt;/span&gt;user 

&lt;span class="c"&gt;# Creating 2 files&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;user 
&lt;span class="nb"&gt;touch &lt;/span&gt;firstfile secondfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Shell Scripting Roles
&lt;/h2&gt;

&lt;p&gt;Shell scripting serves three main roles:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Infrastructure Management&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Code Management&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Configuration Management&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  User-Friendly Example
&lt;/h2&gt;

&lt;p&gt;Now, let's walk through an example using the username "user":&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;List files in the current directory:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   user@hostname:~/path/to/directory&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Create and open a shell script file named &lt;code&gt;shellscript.sh&lt;/code&gt;:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   user@hostname:~/path/to/directory&lt;span class="nv"&gt;$ &lt;/span&gt;vim shellscript.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;List files again to confirm the creation of the script:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   user@hostname:~/path/to/directory&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;ls
   &lt;/span&gt;shellscript.sh  otherfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;View the contents of the shell script:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   user@hostname:~/path/to/directory&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;shellscript.sh
   &lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

   &lt;span class="c"&gt;# Create a folder&lt;/span&gt;
   &lt;span class="nb"&gt;mkdir &lt;/span&gt;user 

   &lt;span class="c"&gt;# Create 2 files&lt;/span&gt;
   &lt;span class="nb"&gt;cd &lt;/span&gt;user 
   &lt;span class="nb"&gt;touch &lt;/span&gt;firstfile secondfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Attempt to execute the script (permission denied):&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   user@hostname:~/path/to/directory&lt;span class="nv"&gt;$ &lt;/span&gt;./shellscript.sh
   bash: ./shellscript.sh: Permission denied
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Grant execute permission to the script:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   user@hostname:~/path/to/directory&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;chmod &lt;/span&gt;777 shellscript.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Execute the script successfully:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   user@hostname:~/path/to/directory&lt;span class="nv"&gt;$ &lt;/span&gt;./shellscript.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;List files to verify changes:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   user@hostname:~/path/to/directory&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;ls
   &lt;/span&gt;shellscript.sh  user  otherfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Navigate to the 'user' directory:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   user@hostname:~/path/to/directory&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;user
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;List files in the 'user' directory:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;user@hostname:~/path/to/directory/user&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;ls
&lt;/span&gt;firstfile  secondfile
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Attempt to execute the script inside the 'user' directory (file not found):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;user@hostname:~/path/to/directory/user&lt;span class="nv"&gt;$ &lt;/span&gt;./shellscript.sh
bash: ./shellscript.sh: No such file or directory
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Navigate back to the parent directory:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;user@hostname:~/path/to/directory/user&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ..
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Attempt to execute the script again (folder already exists):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;user@hostname:~/path/to/directory&lt;span class="nv"&gt;$ &lt;/span&gt;./shellscript.sh
&lt;span class="nb"&gt;mkdir&lt;/span&gt;: cannot create directory ‘user’: File exists
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://dev.to/surajvast/advance-shell-script-1-100-5756"&gt;Advance shell scripting ➡️&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>linux</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Node.js Application Deployment on AWS Documentation 🚀</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Thu, 18 Jan 2024 07:09:20 +0000</pubDate>
      <link>https://dev.to/surajvast1/nodejs-application-deployment-on-aws-documentation-32f9</link>
      <guid>https://dev.to/surajvast1/nodejs-application-deployment-on-aws-documentation-32f9</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;This comprehensive guide walks you through the step-by-step process of deploying a Node.js application on AWS (Amazon Web Services). Follow these instructions to successfully set up and deploy your project.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Clone the Repository
&lt;/h3&gt;

&lt;p&gt;Begin by cloning the project repository to your local system using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/verma-kunal/AWS-Session.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Testing the Project Locally
&lt;/h3&gt;

&lt;p&gt;Set up the necessary environment variables in the &lt;code&gt;.env&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DOMAIN=""
PORT=3000
STATIC_DIR="./client"
PUBLISHABLE_KEY=""
SECRET_KEY=""
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Initialize and start the project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Set Up an AWS EC2 Instance
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Create an IAM User:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate an IAM user with Password Access and Admin Permissions.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;EC2 Instance Setup:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Log in to your AWS Console and create an EC2 instance.&lt;/li&gt;
&lt;li&gt;Choose Ubuntu as the OS image and select the &lt;code&gt;t2.micro&lt;/code&gt; instance type.&lt;/li&gt;
&lt;li&gt;Create a new key pair and download the &lt;code&gt;.pem&lt;/code&gt; file.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Connecting to the Instance Using SSH:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Locate your &lt;code&gt;.pem&lt;/code&gt; file and run the following commands:
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;chmod &lt;/span&gt;400 &lt;span class="s2"&gt;"Keyvalue.pem"&lt;/span&gt;
 ssh &lt;span class="nt"&gt;-i&lt;/span&gt; instance.pem ubuntu@&amp;lt;IP_ADDRESS&amp;gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;Result: &lt;code&gt;ubuntu@ip-&amp;lt;IP_ADDRESS&amp;gt;:~$&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Congratulations! Your AWS instance is now successfully set up locally.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Configuring Ubuntu on Remote VM
&lt;/h3&gt;

&lt;p&gt;Update outdated packages and dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install Git, Node.js, and npm following the guides by DigitalOcean.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pmludqi83qh1hb4qeg6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3pmludqi83qh1hb4qeg6.png" alt="Installing Git" width="800" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsy9s057va9zqez7q3hl3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsy9s057va9zqez7q3hl3.png" alt="Configuring Node.js and npm" width="800" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Deploying the Project on AWS
&lt;/h3&gt;

&lt;p&gt;Clone the project in the remote VM:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/verma-kunal/AWS-Session.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Create a &lt;code&gt;.env&lt;/code&gt; file and set up environment variables using the &lt;code&gt;vi&lt;/code&gt; command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DOMAIN="http://localhost:3000"
PORT=3000
STATIC_DIR="./client"
PUBLISHABLE_KEY="your_publishable_key"
SECRET_KEY="your_secret_key"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Set up an Elastic IP Address for your EC2 instance and use it as your DOMAIN.&lt;/p&gt;

&lt;p&gt;Initialize and start the project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install
&lt;/span&gt;npm run start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 6: Configure Inbound Rules
&lt;/h3&gt;

&lt;p&gt;Edit the inbound rules in the security group of your EC2 instance to allow traffic from the specific port.&lt;/p&gt;

&lt;p&gt;Access your application at &lt;strong&gt;[AWS Public IP]:3000&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3681d5mr23oltusctw4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo3681d5mr23oltusctw4.png" alt="Inbound Rules Configuration" width="800" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiaxicx70rqeh1hz5mpgi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiaxicx70rqeh1hz5mpgi.png" alt="Security Group Configuration" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! Your Node.js application is now successfully deployed on AWS. 🎉&lt;/p&gt;

&lt;p&gt;Feel free to access it through your configured DOMAIN and explore your deployed project. If you have any further questions or encounter issues, refer to the official AWS documentation or seek assistance from the AWS community. Happy coding! 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Git branching strategy</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Sun, 14 Jan 2024 06:39:22 +0000</pubDate>
      <link>https://dev.to/surajvast1/git-branching-strategy-4kll</link>
      <guid>https://dev.to/surajvast1/git-branching-strategy-4kll</guid>
      <description>&lt;h1&gt;
  
  
  Git Documentation 🚀
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Introduction on git
&lt;/h2&gt;

&lt;p&gt;Git is a distributed version control system widely used in software development, known for its speed, flexibility, and resilience. It enables efficient collaboration among developers, offering features such as versioning, branching, and merging. Major hosting platforms like GitHub and GitLab leverage Git for collaborative software development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Version Control System (VCS) 🔄
&lt;/h3&gt;

&lt;p&gt;A Version Control System helps manage and track changes in source code, documents, or any set of files over time. Git, a powerful VCS, ensures systematic versioning, providing a reliable history of changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Speed and Efficiency ⚡
&lt;/h3&gt;

&lt;p&gt;Git is renowned for its speed, making it efficient even for large projects. Developers can perform operations quickly, enhancing productivity and enabling a smooth development workflow.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Flexibility and Branching 🌳
&lt;/h3&gt;

&lt;p&gt;Git offers flexibility through its branching mechanism, allowing developers to work on different aspects of a project simultaneously. This feature promotes parallel development, making it easier to manage and merge changes without conflicts.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Resilience and Reliability 🛡️
&lt;/h3&gt;

&lt;p&gt;Designed for resilience, Git ensures the integrity of version history, recovering from various issues. It provides a robust and dependable platform for version control.&lt;/p&gt;

&lt;h1&gt;
  
  
  Types of Git Branching Strategy
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F89is7o1khk6re2bnvyiz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F89is7o1khk6re2bnvyiz.png" alt="Image description" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  a. Gitflow Branching Strategy 🌿
&lt;/h3&gt;

&lt;p&gt;Gitflow is a popular branching strategy utilizing two main branches: master and develop. The master branch holds production-ready code, while the develop branch contains the latest development code. Feature branches stem from the develop branch, and upon completion, they are merged back into it. When the develop branch is ready for release, it merges into the master branch, creating a new release.&lt;/p&gt;

&lt;p&gt;Gitflow is robust but complex, ideal for large projects with extended release cycles, demanding strict discipline in feature branch creation and merging.&lt;/p&gt;

&lt;h3&gt;
  
  
  b. Feature Branching 🚀
&lt;/h3&gt;

&lt;p&gt;Feature branching is a simple strategy where each new feature is developed on its branch. This approach allows isolated development and testing, facilitating easy rollback if needed. Feature branches originate from the master branch and merge back when the feature is complete.&lt;/p&gt;

&lt;p&gt;Feature branching suits smaller projects or teams seeking a straightforward strategy. However, it may become unwieldy for larger projects with numerous developers and features.&lt;/p&gt;

&lt;h3&gt;
  
  
  c. Release Branching 🚢
&lt;/h3&gt;

&lt;p&gt;Release branching involves creating a new branch for each project release. This strategy allows final testing and bug fixing on the release branch before merging into the master branch for production.&lt;/p&gt;

&lt;p&gt;Release branching is suitable for projects with short release cycles or specific testing requirements for each release. However, managing multiple release branches simultaneously can pose challenges.&lt;/p&gt;

&lt;h3&gt;
  
  
  d. Hotfix Branching Strategy 🔥
&lt;/h3&gt;

&lt;p&gt;The Hotfix branching strategy within Git is a specialized approach designed to rapidly address critical issues in a production environment. Unlike the feature-driven nature of Gitflow, the Hotfix strategy allows for the swift resolution of urgent bugs without waiting for the regular release cycle.&lt;/p&gt;

&lt;p&gt;When a critical issue arises, a Hotfix branch is created directly from the master branch, ensuring a basis on the latest production-ready code. This isolation prevents interference with ongoing development efforts. Developers then focus on efficiently resolving the identified issue on the Hotfix branch.&lt;/p&gt;

&lt;p&gt;Once the Hotfix is complete, it undergoes a dual merging process. First, it is merged into the master branch for immediate deployment, rectifying the critical problem in the production environment. Second, the Hotfix branch is merged into the develop branch to ensure the fix becomes part of the ongoing development, incorporating it into future releases.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/surajvast/nodejs-application-deployment-on-aws-documentation-32f9"&gt;Deploying an nodejs application on aws ➡️&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devops</category>
      <category>git</category>
      <category>development</category>
      <category>day8</category>
    </item>
    <item>
      <title>Shell scripting with Aws</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Fri, 12 Jan 2024 10:27:04 +0000</pubDate>
      <link>https://dev.to/surajvast1/devops-learning-complete-guide7-3cfb</link>
      <guid>https://dev.to/surajvast1/devops-learning-complete-guide7-3cfb</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;After successfully installing and creating your AWS EC2 instance, let's delve into the world of shell scripting by implementing a popular GitHub API. This script will allow you to view the list of collaborators and remove someone from it, addressing the common issue of revoking permissions when a person leaves an organization or a project.&lt;/p&gt;

&lt;h2&gt;
  
  
  AWS EC2 Instance Setup
&lt;/h2&gt;

&lt;p&gt;Start by creating an AWS instance using the following image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11vtdrqhdq916n3ku123.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F11vtdrqhdq916n3ku123.png" alt="AWS Instance Setup" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connect your CLI to your EC2 instance and clone the &lt;a href="https://github.com/surajvast1/shell-script"&gt;GitHub repository&lt;/a&gt; with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/surajvast1/shell-script
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5puhzcm0ctne35n8d58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fd5puhzcm0ctne35n8d58.png" alt="Clone Repository" width="800" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Collaboration Test
&lt;/h2&gt;

&lt;p&gt;Create a GitHub organization and add a collaborator to test your script. Run the following set of commands in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;shell-scripting-projects/github-api
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;organization_username&amp;gt;"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;github_access_token&amp;gt;"&lt;/span&gt;
./list-users.sh &amp;lt;repo_owner&amp;gt; &amp;lt;repo_name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd &lt;/span&gt;shell-scripting-projects/github-api
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;username&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"surajvast1"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"ghp_sAJKxxxxxxxxxxxxxxxxxxxxxxxxxx"&lt;/span&gt;
./list-users.sh surajvast1 shell-script
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18aw05jk2t1pwz653nj4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F18aw05jk2t1pwz653nj4.png" alt="GitHub Collaboration Test" width="799" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  jq Information
&lt;/h2&gt;

&lt;p&gt;The script utilizes &lt;code&gt;jq&lt;/code&gt; to access only the names of collaborators from the JSON response.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Scripting with Helper Function
&lt;/h2&gt;

&lt;p&gt;To enhance the shell script, a helper function can be added. Here is an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;function &lt;/span&gt;helper &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="nv"&gt;expected_cmd_args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nv"&gt;$# &lt;/span&gt;&lt;span class="nt"&gt;-ne&lt;/span&gt; &lt;span class="nv"&gt;$expected_cmd_args&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Please execute the script with the required cmd and args"&lt;/span&gt;
    &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"./list-users.sh &amp;lt;repo_owner&amp;gt; &amp;lt;repo_name&amp;gt;"&lt;/span&gt;
  &lt;span class="k"&gt;fi&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This function ensures that the script is executed with the correct number of command-line arguments.&lt;br&gt;
 🚀👩‍💻&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/surajvast/git-branching-strategy-4kll"&gt;Git branching strategy ➡️&lt;/a&gt; &lt;/p&gt;

</description>
      <category>day7</category>
      <category>devops</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Getting started with an Amazon Ec2</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Tue, 09 Jan 2024 18:53:47 +0000</pubDate>
      <link>https://dev.to/surajvast1/devops-learning-complete-guide5-33h4</link>
      <guid>https://dev.to/surajvast1/devops-learning-complete-guide5-33h4</guid>
      <description>&lt;p&gt;Meanwhile, take a look at AWS's free-tier services by visiting:&lt;a href="https://aws.amazon.com/"&gt; AWS Free Tier&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hello Readers!let's dive into Amazon's renowned cloud computing service, EC2 (Elastic Cloud Computing), a key player in the AWS cloud computing lineup. EC2 stands out for its widespread use and user-friendly nature, making it accessible for beginners and experts alike.&lt;/p&gt;

&lt;p&gt;When it comes to cloud computing, Amazon's AWS is in a league of its own, outshining even Google's Cloud Computing. Here's why AWS, and specifically EC2, is the go-to choice:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Intuitive User Interface:&lt;/strong&gt; AWS boasts a better and more user-friendly UI/UX, making it a breeze for users to navigate and make the most of its features.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consistency &amp;amp; Reliability:&lt;/strong&gt; EC2 offers a reliable and consistent performance, ensuring your applications run smoothly without any glitches.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Flexibility, Scalability, and High Performance:&lt;/strong&gt; AWS provides the flexibility to scale resources as needed, ensuring top-notch performance to meet varying demands.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pay-As-You-Go Pricing:&lt;/strong&gt; The cost-effective pay-as-you-go pricing model means you only pay for the resources you use, making it a financially savvy choice.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customization Options:&lt;/strong&gt; EC2 offers a plethora of customization options, allowing you to tailor your computing environment to suit your specific requirements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security at the Forefront:&lt;/strong&gt; Security is a top priority for AWS, ensuring that your data and applications are safeguarded against potential threats.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Rich Learning Resources:&lt;/strong&gt; AWS provides extensive learning platforms, tutorials, and comprehensive documentation, making it easier for users to grasp and make the most of the services.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Exceptional Customer Care Support:&lt;/strong&gt; AWS takes customer support seriously, providing unparalleled assistance and guidance to its users. Your satisfaction is their priority.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In summary, EC2 under AWS stands out not just for its technical capabilities but also for its user-focused approach, making it a leading choice in the realm of cloud computing services.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mzdt7pzszodnbzq0mjh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3mzdt7pzszodnbzq0mjh.png" alt="Image description" width="735" height="463"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Elastic Cloud Computing (EC2):&lt;br&gt;
About EC2&lt;br&gt;
Setup EC2 Instance&lt;br&gt;
Stepwise installation.&lt;br&gt;
Setup SSH Key&lt;br&gt;
Connect and clone Git repo&lt;br&gt;
install Node.js, NPM modules, and learn how to launch a website.&lt;br&gt;
Conclusion&lt;br&gt;
AWS Elastic Cloud Computing (EC2)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;About AWS EC2&lt;br&gt;
Amazon Elastic Compute Cloud (Amazon EC2) provides scalable computing capacity in the Amazon Web Services (AWS) cloud. Using Amazon EC2 eliminates your need to invest in hardware upfront, so you can develop and deploy applications faster. You can use Amazon EC2 to launch as many or as few virtual servers as you need, configure security and networking, and manage storage. Amazon EC2 enables you to scale up or down to handle changes in requirements or spikes in popularity, reducing your need to forecast traffic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Setup EC2 Instance&lt;br&gt;
Sign up on AWS at &lt;a href="https://aws.amazon.com/"&gt;https://aws.amazon.com/&lt;/a&gt; and make an account. You will need to enter your billing and credit card information. However, you'll be charged few dollars or less just to get confirm it's a legit account and the deducted amount will get refunded later on.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note: You should delete instances you no longer need to ignore any additional billing unknowingly.&lt;/p&gt;

&lt;p&gt;Find and Select Amazon EC2 from listed products and services.&lt;br&gt;
Click the button: "Launch Instance"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tggw08wkmu6c6swumhe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8tggw08wkmu6c6swumhe.png" alt="Image description" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzc3vt56x2d0axi9bgqi7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzc3vt56x2d0axi9bgqi7.png" alt="Image description" width="800" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now, follow to the steps mentioned below to get started and for a successful installation.&lt;/p&gt;

&lt;p&gt;Step 1: Choose an Amazon Machine Image (AMI): This is the operating system your virtual machine in the cloud will be. As Ubuntu is popular, open-sourced, easy to use, and included in free tier eligibility.&lt;/p&gt;

&lt;p&gt;Step 2: Choose an Instance Type: Leave it at "General purpose t2.micro free tier eligible". Click "Next: Configure Instance Details."&lt;/p&gt;

&lt;p&gt;Step 3: Configure Instance Details: Leave the default settings. Click "Next: Add Storage"&lt;/p&gt;

&lt;p&gt;Step 4: Add Storage: Leave the default settings. Click "Next: Add Tags"&lt;/p&gt;

&lt;p&gt;Step 5: Add Tags: Create a key and value. I named mine "tutorial-key": "tutorial-value"&lt;/p&gt;

&lt;p&gt;Step 6: Configure Security Group: Check the radio button labeled "create a new security group" and give it a name and description. Make sure there is an SSH type listed and add HTTP and HTTPS. Click "Review and Launch"&lt;/p&gt;

&lt;p&gt;Step 7: Review Instance Launch: Click "Launch" The following window should appear. Select "Create a new key pair" and type in a name. Click "Download." Make sure you save this file!!! Click "launch instance" You should be redirected to a page where you can click "view instances" to see all your instances. Your new EC2 instance should appear and may take a few moments to initialize.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4x0cqjw4mup8212nflb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj4x0cqjw4mup8212nflb.png" alt="Image description" width="800" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Yaay! You have successfully created a new EC2 instance!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/surajvast/devops-learning-complete-guide7-3cfb"&gt;Devops Shell scripting ➡️ &lt;/a&gt;&lt;/p&gt;

</description>
      <category>day6</category>
      <category>aws</category>
      <category>devops</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Devops learning complete guide(5)</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Tue, 09 Jan 2024 18:34:23 +0000</pubDate>
      <link>https://dev.to/surajvast1/devops-learning-complete-guide5-1eh5</link>
      <guid>https://dev.to/surajvast1/devops-learning-complete-guide5-1eh5</guid>
      <description>&lt;h1&gt;
  
  
  Creating an id in aws and configuring with cli
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://dev.to/aws-builders/create-a-free-aws-account-and-configure-the-aws-cli-1khf"&gt;Create an aws account-&amp;gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Connecting to AWS (Amazon Web Services) from a Linux terminal typically involves using the SSH (Secure Shell) protocol. Here are the general steps to connect to an AWS instance from your Linux terminal:&lt;/p&gt;

&lt;p&gt;Prerequisites:&lt;br&gt;
AWS Account:&lt;/p&gt;

&lt;p&gt;Make sure you have an AWS account and the necessary permissions to access EC2 instances.&lt;br&gt;
Key Pair:&lt;/p&gt;

&lt;p&gt;When you launch an EC2 instance, you will need to specify a key pair. Download and save the private key file (.pem) securely on your local machine.&lt;/p&gt;

&lt;p&gt;Steps:&lt;br&gt;
Open Terminal:&lt;/p&gt;

&lt;p&gt;Open your Linux terminal on your local machine.&lt;br&gt;
Navigate to the Directory:&lt;/p&gt;

&lt;p&gt;Move to the directory where you saved your private key file using the cd command.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd /path/to/your/keypair/&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Change Key File Permissions:&lt;br&gt;
Set the correct permissions for your private key file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod 400 your-key-pair.pem&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Connect using SSH:&lt;/p&gt;

&lt;p&gt;Use the ssh command to connect to your AWS instance. Replace your-instance-ip with the actual public IP address or DNS name of your AWS instance and your-key-pair.pem with the name of your private key file.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ssh -i your-key-pair.pem ec2-user@your-instance-ip&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If your instance uses a different username (e.g., ubuntu for Ubuntu instances), replace ec2-user with the appropriate username.&lt;/p&gt;

&lt;p&gt;Confirm Connection:&lt;br&gt;
If prompted to confirm the connection, type "yes" and press Enter.&lt;br&gt;
Connected to AWS Instance:&lt;/p&gt;

&lt;p&gt;You should now be connected to your AWS instance via the Linux terminal.&lt;/p&gt;

&lt;p&gt;Successfully changed &lt;br&gt;
&lt;code&gt;[ec2-user@ip-xxx-xx-xx-xxx ~]$&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/surajvast/devops-learning-complete-guide5-33h4"&gt;AWS Ec2&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Linux operating system and basic of shell scripting</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Tue, 09 Jan 2024 17:22:19 +0000</pubDate>
      <link>https://dev.to/surajvast1/devops-learning-complete-guide4-3043</link>
      <guid>https://dev.to/surajvast1/devops-learning-complete-guide4-3043</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe98oz2gb74blnvag8ure.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe98oz2gb74blnvag8ure.png" alt="Image description" width="300" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An operating system (OS) serves as the crucial bridge between your software applications and the underlying hardware of a computer. It manages and facilitates communication between various software programs and the hardware components, ensuring a seamless and efficient computing experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ubuntu vs. Windows
&lt;/h2&gt;

&lt;p&gt;When comparing Ubuntu and Windows, several factors make Ubuntu stand out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Free and Open Source:&lt;/strong&gt; Ubuntu is freely available, open-source software. Users can download, use, and modify it without any cost, fostering a collaborative and supportive community.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; Ubuntu's Linux-based architecture is inherently more secure than Windows. Its robust security features, combined with regular updates, help protect against vulnerabilities and threats.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Distributions:&lt;/strong&gt; Ubuntu offers various distributions tailored for different purposes, such as server deployments, desktop use, or specialized applications. This flexibility allows users to choose the version that best fits their needs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Speed:&lt;/strong&gt; Ubuntu tends to be faster and more lightweight than Windows, making it a preferred choice for users seeking optimal performance, especially on older hardware.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  OS Diagram Model
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i1b99x8lq6y3pf2j4nk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3i1b99x8lq6y3pf2j4nk.png" alt="Image description" width="387" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The OS diagram model encompasses several key components:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Kernel:&lt;/strong&gt; The core of the operating system that interfaces between software and hardware. It manages device and memory resources, processes, and handles system-related calls.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;System Libraries:&lt;/strong&gt; Collections of pre-compiled routines and functions that facilitate communication between the kernel and software applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Compilers:&lt;/strong&gt; Tools that convert source code into machine-readable code, enabling the execution of user programs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User Process:&lt;/strong&gt; The space where user applications and processes run, interacting with the kernel and system libraries.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Fundamentals of Shell Scripting
&lt;/h2&gt;

&lt;p&gt;Shell scripting involves using commands to communicate with the operating system. It is especially valuable in server environments where graphical user interfaces (GUIs) may be impractical. Key points include:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Shell Scripting Definition:&lt;/strong&gt; The use of commands within a shell to automate tasks and interact with the operating system.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Server Environments:&lt;/strong&gt; Due to the resource-intensive nature of GUIs, servers often rely on shell scripting for efficiency and resource optimization.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Common Commands:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cd&lt;/code&gt;: Change directory&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pwd&lt;/code&gt;: Print working directory&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ls&lt;/code&gt;: List files and directories&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;mkdir&lt;/code&gt;: Create a new directory&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;touch&lt;/code&gt;: Create an empty file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;vi&lt;/code&gt;: Text editor; press &lt;code&gt;i&lt;/code&gt; to insert text, &lt;code&gt;:wq!&lt;/code&gt; to save, and exit&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cat&lt;/code&gt;: Display file content&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cd ..&lt;/code&gt;: Move up one directory level&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;clear&lt;/code&gt;: Clear the terminal screen&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rm&lt;/code&gt;: Remove a file&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;rm -r&lt;/code&gt;: Remove a directory and its contents&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;System Information:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;df -h&lt;/code&gt;: Display disk space usage&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;nproc&lt;/code&gt;: Show the number of CPUs&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;top&lt;/code&gt;: Display system information, processes, and resource usage&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By understanding these fundamental concepts, users can navigate and interact with the operating system efficiently, automate tasks through shell scripting, and make informed choices when selecting an operating system for their needs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/surajvast/devops-learning-complete-guide5-33h4"&gt;Getting started with Amazon Ec2 ➡️&lt;/a&gt;&lt;/p&gt;

</description>
      <category>day4</category>
      <category>linux</category>
      <category>devops</category>
      <category>programming</category>
    </item>
    <item>
      <title>"⚡️⚡️⚡️ Cloud Computing 101: A Beginner's Guide to Mastering the Basics 🚀☁️☁️"</title>
      <dc:creator>Shubham Srivastava</dc:creator>
      <pubDate>Tue, 09 Jan 2024 09:02:25 +0000</pubDate>
      <link>https://dev.to/surajvast1/devops-learning-complete-guide3-41bh</link>
      <guid>https://dev.to/surajvast1/devops-learning-complete-guide3-41bh</guid>
      <description>&lt;p&gt;Cloud computing is the on-demand delivery of IT resources over the Internet with pay-as-you-go pricing. Instead of buying, owning, and maintaining physical data centers and servers, you can access technology services, such as computing power, storage, and databases, on an as-needed basis from a cloud provider&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloud computing can majorly be classified into two main models:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1.Deployment Model&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;2.Service Model&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumuhcoibfla3k5dwwl34.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fumuhcoibfla3k5dwwl34.png" alt="Image description" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  What is a Cloud Deployment Model?
&lt;/h4&gt;

&lt;p&gt;The cloud deployment model determines how and where your data is stored and who can access it, based on factors like ownership and scale. It outlines the structure of your cloud setup, including server locations and control mechanisms, and clarifies whether you'll receive pre-made services or need to build everything from scratch&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1clim23ir8nwk9cv6ufb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1clim23ir8nwk9cv6ufb.png" alt="Image description" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud Deployment Models
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Public Cloud
&lt;/h3&gt;

&lt;h3&gt;
  
  
  2. Private Cloud
&lt;/h3&gt;

&lt;h3&gt;
  
  
  3. Hybrid Cloud
&lt;/h3&gt;

&lt;h3&gt;
  
  
  4. Community Cloud
&lt;/h3&gt;




&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flzro3o1qi75nsu34hvk4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flzro3o1qi75nsu34hvk4.png" alt="Image description" width="595" height="311"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Public Cloud
&lt;/h2&gt;

&lt;p&gt;A public cloud is a cloud computing model where IT infrastructure like servers, networking, and storage resources are offered as virtual resources accessible over the internet.The name says it all. It is accessible to the public. &lt;/p&gt;

&lt;p&gt;A third-party provider maintains the hardware, relevant software, and licenses in a globally distributed network of data centers. You can access exactly what you need on-demand and at any scale from any device of choice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of the Public Cloud Model:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Scalability:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public clouds offer virtually unlimited scalability.&lt;/li&gt;
&lt;li&gt;Resource usage can be quickly increased or decreased based on demand without capacity concerns.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Cost Efficiency:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Operates on a pay-as-you-go model, reducing upfront investment in hardware and infrastructure.&lt;/li&gt;
&lt;li&gt;Pay only for the resources utilized, leading to significant cost savings.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Reliability:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Public cloud providers invest heavily in infrastructure maintenance.&lt;/li&gt;
&lt;li&gt;Multiple data centers worldwide ensure access to the latest hardware and software.&lt;/li&gt;
&lt;li&gt;Third-party providers ensure all upgrades and patches are up-to-date, enhancing reliability.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Examples of public cloud services:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Amazon Web Services (AWS)&lt;/li&gt;
&lt;li&gt;Microsoft Azure&lt;/li&gt;
&lt;li&gt;Google Cloud Platform (GCP)&lt;/li&gt;
&lt;li&gt;IBM Cloud&lt;/li&gt;
&lt;li&gt;Oracle Cloud Infrastructure (OCI)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Private Cloud
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7h828qft5phcsk58tyyb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7h828qft5phcsk58tyyb.png" alt="Image description" width="718" height="314"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A private cloud is a cloud computing environment dedicated to a single organization. Any cloud infrastructure has underlying compute resources like CPU and storage that you provision on demand through a self-service portal.In a private cloud, all resources are isolated and in the control of one organization.&lt;/p&gt;

&lt;p&gt;The cloud platform is implemented in a cloud-based secure environment that is protected by powerful firewalls and under the supervision of an organization’s IT department. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of the Private Cloud Model:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cost Efficiency and Control:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Companies seeking cost efficiency and greater control over data and resources may find the private cloud more suitable.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Enhanced Security and Flexibility:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Some organizations believe the private cloud offers benefits such as enhanced security, flexibility, and control.&lt;/li&gt;
&lt;li&gt;They prefer the freedom to make architectural decisions and select hardware and software tailored to their requirements.&lt;/li&gt;
&lt;li&gt;Private cloud adoption may also be driven by the need to meet regulatory compliance for sensitive data.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Data Privacy:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The private cloud is ideal for storing corporate data, limiting access to authorized personnel only.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Security Measures:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Segmentation of resources within the same infrastructure enhances access control and security levels.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Examples of private cloud solutions:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;VMware vCloud Suite&lt;/li&gt;
&lt;li&gt;Microsoft Azure Stack&lt;/li&gt;
&lt;li&gt;OpenStack&lt;/li&gt;
&lt;li&gt;Cisco UCS Director&lt;/li&gt;
&lt;li&gt;HPE Helion CloudSystem&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71c75jy0esmdpo6gpcc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F71c75jy0esmdpo6gpcc0.png" alt="Image description" width="720" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Hybrid Cloud
&lt;/h2&gt;

&lt;p&gt;As the name suggests, a hybrid cloud is a combination of two or more cloud architectures. A hybrid cloud is a mixed computing environment where applications are run using a combination of computing, storage, and services in different environments—public clouds and private clouds, including on-premises data centers or “edge” locations.&lt;/p&gt;

&lt;p&gt;A company with critical data will prefer storing on a private cloud, while less sensitive data can be stored on a public cloud. The hybrid cloud is also frequently used for 'cloud bursting'.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6orfwmgdfbowexfctwh7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6orfwmgdfbowexfctwh7.png" alt="Image description" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloud bursting :
&lt;/h3&gt;

&lt;p&gt;In a private cloud architecture, the access point for third-party utilization serves as a gateway to external cloud resources, primarily used for cloud bursting scenarios. During periods of high demand, when the organization's private infrastructure reaches capacity, the access point enables seamless integration with public cloud services. This allows the organization to dynamically extend its computing resources into the public cloud, providing additional capacity to meet workload spikes. By leveraging external resources only when needed, organizations can optimize costs and maintain performance levels while retaining control over sensitive data and critical workloads within their private cloud environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of the Hybrid Cloud Model:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cost-Effectiveness:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hybrid solutions leverage the public cloud primarily for data storage, reducing overall costs compared to purely private cloud setups.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Data segmentation enhances security, lowering the risk of data theft from attackers.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Flexibility:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Higher flexibility allows businesses to design custom solutions tailored precisely to their needs.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Examples of hybrid cloud platforms:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;AWS Outposts&lt;/li&gt;
&lt;li&gt;Azure Stack&lt;/li&gt;
&lt;li&gt;Azure VMware Solution&lt;/li&gt;
&lt;li&gt;Google Anthos&lt;/li&gt;
&lt;li&gt;Nutanix Cloud Infrastructure&lt;/li&gt;
&lt;li&gt;VMware Cloud Foundation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkw83z6i7wiw9i7rkzo6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkw83z6i7wiw9i7rkzo6.png" alt="Image description" width="615" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Community Cloud
&lt;/h2&gt;

&lt;p&gt;It allows systems and services to be accessible by a group of organizations. It is a distributed system that is created by integrating the services of different clouds to address the specific needs of a community. The infrastructure of the community could be shared between the organization which has shared concerns or tasks. It is generally managed by a third party or by the combination of one or more organizations in the community.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of the Community Cloud Model:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Cost Effectiveness:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shared infrastructure leads to cost savings for participating organizations.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Shared Resources:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Allows for efficient resource sharing among multiple organizations, optimizing infrastructure utilization.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;&lt;strong&gt;Collaboration and Data Sharing:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Facilitates collaboration and data sharing among community members, promoting synergy and productivity.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Examples of community cloud platforms:
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Government Community Cloud (GCC)&lt;/li&gt;
&lt;li&gt;Healthcare Community Cloud&lt;/li&gt;
&lt;li&gt;Financial Services Community Cloud&lt;/li&gt;
&lt;li&gt;Research Community Cloud&lt;/li&gt;
&lt;li&gt;Education Community Cloud&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Service model -&amp;gt;&lt;/p&gt;

</description>
      <category>learning</category>
      <category>beginners</category>
      <category>cloud</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
