<?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: Rarai365</title>
    <description>The latest articles on DEV Community by Rarai365 (@rarai365).</description>
    <link>https://dev.to/rarai365</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%2F2627749%2F3d86d5c9-5f82-4d08-9e84-b58dfeaa394c.png</url>
      <title>DEV Community: Rarai365</title>
      <link>https://dev.to/rarai365</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rarai365"/>
    <language>en</language>
    <item>
      <title>Full-Stack Data Flow in React: With and Without Redux</title>
      <dc:creator>Rarai365</dc:creator>
      <pubDate>Fri, 07 Mar 2025 10:44:50 +0000</pubDate>
      <link>https://dev.to/rarai365/full-stack-data-flow-in-react-with-and-without-redux-4eg7</link>
      <guid>https://dev.to/rarai365/full-stack-data-flow-in-react-with-and-without-redux-4eg7</guid>
      <description>&lt;p&gt;When building a React application, understanding how data flows between the frontend, backend, and database is crucial. This blog will explore the full-stack data flow, both without Redux and with Redux, explaining why Redux was introduced and what problems it solves.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Flow in React Without Redux
&lt;/h2&gt;

&lt;p&gt;In a traditional React application without Redux, the data flow follows these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;UI State Management &lt;br&gt;
The UI consists of multiple React components, each of which may have its own state using React's built-in state management (e.g., useState). When a user performs an action, such as clicking a button, the state updates accordingly.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;API Request Using Axios&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once the UI needs data (e.g., fetching a list of users), it sends an API request to the backend using Axios. Axios is a popular library for making HTTP requests, helping React applications interact with a server.&lt;/p&gt;

&lt;p&gt;3.API Query to the Database&lt;/p&gt;

&lt;p&gt;The back end receives the request and queries the database for the required data. This step involves querying a relational or non-relational database. The database processes the query and returns the requested data to the backend.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwq4ewvghd0ejr2e4fqcm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwq4ewvghd0ejr2e4fqcm.png" alt="Traditional Data flow" width="783" height="184"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4.Response from API to UI&lt;/p&gt;

&lt;p&gt;The backend processes the data and sends it back to the front end. The front end then updates the component state, triggering a re-render of the UI to display the new data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Challenges Without Redux:
&lt;/h2&gt;

&lt;p&gt;State is scattered: Each component manages its own state, making state management complex.&lt;/p&gt;

&lt;p&gt;Prop drilling: Passing data through multiple component layers creates inefficiencies.&lt;/p&gt;

&lt;p&gt;Reusability issues: Data fetching logic gets repeated across multiple components, leading to duplication.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Flow in React With Redux
&lt;/h2&gt;

&lt;p&gt;Redux was introduced to solve the state management problems in larger applications by centralizing state in a single store. Instead of managing state locally in individual components, Redux maintains a single source of truth for the entire application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Redux?
&lt;/h2&gt;

&lt;p&gt;Centralized state management: A global state allows data to be easily shared across components.&lt;/p&gt;

&lt;p&gt;Avoids prop drilling: Components can access state directly without passing props manually.&lt;/p&gt;

&lt;p&gt;Improved debugging: Redux DevTools provides a clear view of state changes and dispatched actions.&lt;/p&gt;

&lt;p&gt;Efficient state updates: Redux ensures that only necessary components re-render when the state changes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Data Flow in Redux:
&lt;/h2&gt;

&lt;p&gt;User Interaction: A user performs an action (e.g., clicking a button), triggering an event in the UI.&lt;/p&gt;

&lt;p&gt;Dispatching an Action: Instead of directly calling an API, the event dispatches an action to Redux.&lt;/p&gt;

&lt;p&gt;Middleware &amp;amp; API Request: If the action requires data from an API, Redux middleware (like Redux Thunk) makes the API request.&lt;/p&gt;

&lt;p&gt;API Query to the Database: The backend retrieves data from the database and sends it back as a response.&lt;/p&gt;

&lt;p&gt;Redux Store Update: Upon receiving the API response, Redux updates the global state.&lt;/p&gt;

&lt;p&gt;Component Re-Render: The updated state triggers a UI re-render, ensuring the latest data is displayed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uz0ekxrxxq3kp2mihu3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1uz0ekxrxxq3kp2mihu3.png" alt="Data flow with Redux" width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages of Redux in Data Flow:
&lt;/h2&gt;

&lt;p&gt;Global State Management: Eliminates scattered state, making data management more predictable.&lt;/p&gt;

&lt;p&gt;Performance Optimization: Components only re-render when necessary, avoiding unnecessary updates.&lt;/p&gt;

&lt;p&gt;Better Asynchronous Handling: Redux middleware like Redux Thunk efficiently manages API calls.&lt;/p&gt;

&lt;p&gt;Improved Debugging: Redux DevTools enable developers to track actions, making debugging easier.&lt;/p&gt;

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

&lt;p&gt;Without Redux, state management in large applications becomes difficult due to scattered state and repeated API calls. Redux simplifies state handling by centralizing data, improving scalability, performance, and maintainability.&lt;/p&gt;

&lt;p&gt;For small projects, React’s built-in state management or the Context API may be sufficient. However, for complex applications, Redux is a powerful tool to manage state efficiently and ensure a structured, maintainable codebase.&lt;/p&gt;

</description>
      <category>programming</category>
      <category>react</category>
      <category>fullstack</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Building a Functional Calculator App with HTML, CSS, and JavaScript</title>
      <dc:creator>Rarai365</dc:creator>
      <pubDate>Fri, 28 Feb 2025 07:31:00 +0000</pubDate>
      <link>https://dev.to/rarai365/building-a-functional-calculator-app-with-html-css-and-javascript-614</link>
      <guid>https://dev.to/rarai365/building-a-functional-calculator-app-with-html-css-and-javascript-614</guid>
      <description>&lt;p&gt;Creating a calculator app is an excellent project to practice  web development skills. This blog will walk you through the process of building a functional calculator from designing the user interface (UI) to implementing the core logic. I have used HTML, CSS, and JavaScript to create the app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Designing the User Interface (HTML and CSS)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The first step is to create a clean and intuitive UI for our calculator. Here’s how I approached the design.&lt;/p&gt;

&lt;p&gt;I have created a .wrapper  class which is a container that centers the calculator on the screen. It ensures the calculator is both vertically and horizontally aligned, providing a clean layout.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.wrapper {
  min-height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  border: 2px solid black;
  background-color: rgb(167, 219, 219);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Inside the wrapper container, I have put another class .calculator-container  for a calculator display screen and buttons. By using display: flex; and flex-direction: column; the child elements stack vertically with a gap of 12px between them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.calculator-container {
  display: flex;
  flex-direction: column;
  gap: 12px;
  width: 500px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each row of buttons is wrapped in a .flex-container class. This class uses display: flex; to arrange the buttons in a horizontal row. The gap: 12px; property creates consistent spacing between the buttons, ensuring they are visually appealing and user-friendly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flex-container {
  display: flex;
  flex-wrap: nowrap;
  gap: 12px;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The .display-box class styles the calculator’s result display area. The text-align: end; property aligns the text to the right and font-size: 24px; makes the text easy to read. The rounded corners and background colour improve aesthetics.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.display-box {
  padding: 24px;
  border: 1px solid black;
  border-radius: 8px;
  text-align: end;
  font-size: 24px;
  background-color: aliceblue;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how the UI looks at the end. I have also given some background colour and border radius to make it visually appealing.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Step 2: Adding Functionality with Javascript&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now that we have the UI, Let's Implement the logic to make the calculator functional.&lt;/p&gt;

&lt;p&gt;JavaScript:&lt;/p&gt;

&lt;p&gt;1.Selecting Elements&lt;br&gt;
We need to interact with the display box and all the buttons. Let’s start selecting these elements.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const displayBox = document.querySelector(".display-box");
const calculatorBtn = document.querySelectorAll("button");

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

&lt;/div&gt;



&lt;p&gt;2.Handling Button Clicks&lt;/p&gt;

&lt;p&gt;We loop through all the buttons using forEach and attach a click event listener to each. The listener calls the handleButtonAction function with the button’s value as an argument. This ensures that each button's functionality is dynamically handled based on its value.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const handleButtonAction = (buttonValue) =&amp;gt; {}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let displayValue = "";

calculatorBtn.forEach((btn) =&amp;gt; {
  const buttonValue = btn.innerText;

  btn.onclick = () =&amp;gt; {
    handleButtonAction(buttonValue);
  };
});

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

&lt;/div&gt;



&lt;p&gt;3.Updating the display&lt;/p&gt;

&lt;p&gt;The display () function updates the display box with the current value or a default 0.0.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const display = () =&amp;gt; {
  displayBox.innerText = displayValue || "0.0";
};

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

&lt;/div&gt;



&lt;p&gt;4.Append Button Value&lt;br&gt;
o   Purpose: Adds the button’s value to the input string.&lt;br&gt;
o   Explanation: Handles all other valid inputs (numbers and operators) by appending them to the existing string.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;displayValue += buttonValue; // Append the button value to the display
display();

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

&lt;/div&gt;



&lt;p&gt;5.Handling Button Actions&lt;/p&gt;

&lt;p&gt;The if conditions in the handleButtonAction function are used to process the different types of button clicks (e.g., clearing input, appending values, handling operators) and ensure valid calculations. Let’s break them down:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Evaluate Expression ( “=” or Enter Key)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;o   Purpose: Evaluate the mathematical expression in displayValue.&lt;br&gt;
o   Explanation: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  The eval () function computes the results of the mathematical expression.&lt;/li&gt;
&lt;li&gt;  The results are converted to a string and stored in displayValue for display
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (buttonValue === "=" || buttonValue === "Enter") {
  const result = eval(displayValue); // Calculate the result
  displayValue = String(result);
  display();
  return;
}

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

&lt;/div&gt;


&lt;p&gt;2.Clear All (AC button)&lt;br&gt;
o   Purpose: clears the entire input.&lt;br&gt;&lt;br&gt;
o   Explanation: This resets displayValue to an empty string, effectively clearing the display box.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
if (buttonValue === "AC") {
  displayValue = ""; // Clear the entire display
  display();
  return;
}

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

&lt;/div&gt;



&lt;p&gt;3.Clear Last Character (C button)&lt;/p&gt;

&lt;p&gt;• Purpose: Deletes the last character from displayValue.&lt;br&gt;
• Explanation: The slice(0, -1) method removes the last character of the string, making it useful for correcting minor input mistakes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (buttonValue === "C") {
  displayValue = displayValue.slice(0, -1); // Remove the last character
  display();
  return;
}

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

&lt;/div&gt;



&lt;p&gt;4.Prevent Invalid Operator Use&lt;br&gt;
o   Purpose: Ensures operators are used in a valid context.&lt;br&gt;
o   Explanation: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Prevents operators at the start of the expression(!displayValue)&lt;/li&gt;
&lt;li&gt;  Prevents two consecutive operators (checks the last character for another operator).
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (["%", "/", "*", "+", "-"].includes(buttonValue)) {
  if (!displayValue || displayValue.slice(-1).match(/[\%\*\+\-\/]/)) {
    return; // Prevent invalid operators
  }
}

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

&lt;/div&gt;



&lt;p&gt;5.Handle Decimal Point (.button)&lt;/p&gt;

&lt;p&gt;o   Purpose: Ensures a number contains only one decimal point.&lt;br&gt;
o   Explanation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;  Splits displayValue into chunks based on operators (e.g., 12.5+3 becomes ["12.5", "3"]).&lt;/li&gt;
&lt;li&gt;  Checks the last chunk (number after the last operator).&lt;/li&gt;
&lt;li&gt;  If the last number already has a decimal, it prevents appending another.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (buttonValue === ".") {
  const lastNumberSet = displayValue.split(/[\%\*\+\-\/]/).pop();
  if (lastNumberSet.includes(".")) return; // Prevent multiple decimals
}

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

&lt;/div&gt;



&lt;p&gt;6.Onkeypress Event Listener&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Purpose: To make the calculator work with keyboard as well.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Explanation: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;we used addEventListener event to the document and it takes two parameters, "keyPress" and "event". It checks if the code includes any "Key" and returns it.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;document.addEventListener("keypress", (event)=&amp;gt;{
  console.log("event", event.key);

  if(event.code.includes("Key")){
    return
  }

  handleButtonAction(event.key)
})

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key Highlights&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Valid Expressions: We ensure valid inputs by preventing consecutive operators, disallowing operators at the start, and handling decimal inputs properly.&lt;/p&gt;

&lt;p&gt;Dynamic Updates: The display() function updates the UI in real time, giving users instant feedback.&lt;/p&gt;

&lt;p&gt;Simplified Logic: Using eval() simplifies the calculation process, but be cautious about its use in production environments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Final Thoughts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Building this calculator was an excellent exercise in combining HTML, CSS, and JavaScript to create a functional and interactive web application. From designing an intuitive UI to implementing robust input handling, this project covers essential concepts for aspiring web developers.&lt;/p&gt;

&lt;p&gt;Try building your own version and experiment with adding new features or styling it differently! Let me know your thoughts or questions in the comments below.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Memory Management in JavaScript: A Beginner-Friendly Guide</title>
      <dc:creator>Rarai365</dc:creator>
      <pubDate>Thu, 13 Feb 2025 20:47:04 +0000</pubDate>
      <link>https://dev.to/rarai365/memory-management-in-javascript-a-beginner-friendly-guide-14ja</link>
      <guid>https://dev.to/rarai365/memory-management-in-javascript-a-beginner-friendly-guide-14ja</guid>
      <description>&lt;p&gt;JavaScript is an essential language for web development, powering everything from interactive websites to complex applications. However, understanding how memory management works in JavaScript is crucial to writing efficient and optimized code. In this guide, we’ll break down the key concepts of memory management in a simple and beginner-friendly way.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. What is Memory Management &amp;amp; Why is it Important?
&lt;/h2&gt;

&lt;p&gt;Memory management is the process of handling the allocation and deallocation of memory in a program. JavaScript automatically manages memory for you, but understanding how it works helps prevent performance issues like memory leaks and inefficient resource usage.&lt;/p&gt;

&lt;p&gt;Imagine your computer’s memory as a bookshelf. When you declare variables or objects, you’re adding books to the shelf. If you never remove old books (unused variables), your shelf becomes cluttered, making it harder to find what you need. Efficient memory management keeps your program running smoothly and prevents unnecessary memory consumption.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. How is Memory Allocated in JavaScript? (Heap vs. Stack)
&lt;/h2&gt;

&lt;p&gt;JavaScript primarily manages memory using two key structures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Stack Memory:&lt;br&gt;
Used for storing primitive values (numbers, strings, booleans) and function calls. It follows a Last In, First Out (LIFO) structure. When a function is called, its variables get pushed onto the stack, and when the function completes, they are removed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Heap Memory: &lt;br&gt;
Used for storing objects and complex data structures. Unlike stack memory, heap memory allows dynamic allocation, meaning objects persist in memory until explicitly removed.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let name = "John"; // Stored in the stack
let user = { age: 30 }; // Stored in the heap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Scope &amp;amp; Its Impact on Memory
&lt;/h2&gt;

&lt;p&gt;Scope determines the lifetime and accessibility of variables in JavaScript. There are three main types of scope:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Global Scope:&lt;br&gt;
Variables declared outside any function. These remain in memory throughout the program’s execution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Function Scope:&lt;br&gt;
Variables declared inside a function are removed when the function ends.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Block Scope:&lt;br&gt;
Variables declared with let or const inside a block {} are removed once the block execution is complete.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function greet() {
  let message = "Hello"; // Stored temporarily in function scope
} // 'message' is removed from memory when function ends
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Understanding scope helps in managing memory efficiently by ensuring variables don’t persist longer than needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Garbage Collection: How JavaScript Frees Up Memory
&lt;/h2&gt;

&lt;p&gt;JavaScript uses Garbage Collection (GC) to automatically clean up unused memory. The most common technique used is Mark-and-Sweep.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mark-and-Sweep Explained:&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The GC marks all accessible objects by tracing references from the root (global scope or active functions).&lt;/p&gt;

&lt;p&gt;Unreachable objects (those with no references) are marked for deletion.&lt;/p&gt;

&lt;p&gt;The memory occupied by these objects is then released, making space for new allocations.&lt;/p&gt;

&lt;p&gt;Visual Representation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let user = { name: "John" };
user = null; // The object is now unreachable and eligible for garbage collection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Common Memory Issues: Memory Leaks &amp;amp; Circular References
&lt;/h2&gt;

&lt;p&gt;Memory leaks occur when memory is allocated but never released, leading to excessive memory consumption.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Common Causes of Memory Leaks:&lt;br&gt;
Global Variables: Variables declared without let, const, or var remain in memory indefinitely.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uncleared Event Listeners:&lt;br&gt;
Event handlers that are not removed can keep references to objects.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Circular References:&lt;br&gt;
When two objects reference each other, making them inaccessible to garbage collection.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example of Circular Reference:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let obj1 = {};
let obj2 = {};
obj1.ref = obj2;
obj2.ref = obj1; // Both objects reference each other and won’t be collected

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Best Practices for Efficient Memory Management
&lt;/h2&gt;

&lt;p&gt;To avoid memory leaks and improve efficiency, follow these best practices:&lt;/p&gt;

&lt;p&gt;✅ Use Local Variables: Limit the use of global variables to prevent unnecessary memory retention.&lt;br&gt;
✅ Manually Nullify Objects: When an object is no longer needed, set it to null.&lt;br&gt;
✅ Remove Event Listeners: Always clean up event listeners when they are no longer needed.&lt;br&gt;
✅ Use WeakMap for Caching: WeakMap allows garbage collection of unused objects.&lt;br&gt;
✅ Avoid Circular References: Be mindful when creating object references.&lt;/p&gt;

&lt;p&gt;Example of Cleaning Up Event Listeners:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function setup() {
  let button = document.getElementById("myButton");
  function clickHandler() {
    console.log("Button Clicked!");
  }
  button.addEventListener("click", clickHandler);

  // Clean up when no longer needed
  button.removeEventListener("click", clickHandler);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Memory management in JavaScript is an essential concept for building efficient applications. By understanding how memory is allocated, how garbage collection works, and following best practices, you can prevent memory leaks and optimize performance.&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Experience Learning the History of the Web.</title>
      <dc:creator>Rarai365</dc:creator>
      <pubDate>Sun, 29 Dec 2024 01:46:33 +0000</pubDate>
      <link>https://dev.to/rarai365/experience-learning-the-history-of-the-web-155i</link>
      <guid>https://dev.to/rarai365/experience-learning-the-history-of-the-web-155i</guid>
      <description>&lt;h2&gt;
  
  
  My Journey Through the History of the Web
&lt;/h2&gt;

&lt;p&gt;Learning about the history of the internet was like opening a treasure chest of innovation, collaboration, and creativity. As someone navigating the world of IT and aspiring to become a full-stack developer, delving into the origins of this revolutionary technology gave me a profound appreciation for the interconnected world we now take for granted.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  The Humble Beginnings
&lt;/h2&gt;

&lt;p&gt;The journey began in the 1960s, with the pioneering efforts of ARPANET. Funded by the U.S. Department of Defense, ARPANET was designed to connect computers for military and academic research purposes. It was fascinating to learn that the first message sent over ARPANET was "LOGIN," though only the letters "LO" made it through due to a system crash—a reminder that even groundbreaking innovations come with their share of challenges.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Evolution of Protocols
&lt;/h2&gt;

&lt;p&gt;Understanding the development of protocols like TCP/IP was a turning point in my exploration. These protocols laid the foundation for global communication, allowing diverse networks to interconnect seamlessly. It struck me how this technical advancement was as much about collaboration as it was about technology. Engineers and scientists worldwide worked together, embodying a spirit of collective progress.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Birth of the World Wide Web
&lt;/h2&gt;

&lt;p&gt;The 1990s saw the birth of the World Wide Web, thanks to Sir Tim Berners-Lee. His vision of a decentralized platform for sharing information was a game-changer. Learning about the creation of HTML, HTTP, and URLs, I couldn’t help but marvel at how these building blocks shaped the dynamic web experiences we enjoy today. This phase of history deeply resonated with me as a budding developer. It underscored the power of simplicity and scalability in creating tools that stand the test of time.&lt;/p&gt;

&lt;h2&gt;
  
  
  From Static to Dynamic
&lt;/h2&gt;

&lt;p&gt;The transition from static web pages to interactive platforms, spurred by innovations like JavaScript and CSS, was another highlight. It’s incredible to see how these technologies evolved, empowering developers to create responsive and user-friendly designs. This evolution also sparked my interest in mastering full-stack development, knowing that the tools I’m learning today are the legacy of decades of experimentation and innovation.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Reflections and Takeaways
&lt;/h2&gt;

&lt;p&gt;What struck me most during this learning experience was the internet’s transformative journey—from a small network connecting a handful of computers to a global system influencing every aspect of life. The internet’s history is a testament to humanity’s ability to innovate, adapt, and collaborate.&lt;/p&gt;

&lt;p&gt;As I continue my journey in tech, this newfound understanding of the web’s origins has given me a deeper respect for the work I aspire to do. It’s inspiring to think that today’s developers stand on the shoulders of giants, building on decades of progress to create a more connected and accessible world.&lt;/p&gt;

&lt;p&gt;Exploring the history of the internet isn’t just about understanding technology; it’s about appreciating the visionaries and unsung heroes who made it all possible. For anyone stepping into the world of IT or web development, I highly recommend taking a moment to look back. The past holds valuable lessons that can shape our future endeavors.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to build a blog website using HTML CSS, and host it in GitHub and deploy it to Vercel.</title>
      <dc:creator>Rarai365</dc:creator>
      <pubDate>Sun, 29 Dec 2024 01:17:30 +0000</pubDate>
      <link>https://dev.to/rarai365/how-to-build-a-blog-website-using-html-css-and-host-it-in-github-and-deploy-it-to-vercel-4dd6</link>
      <guid>https://dev.to/rarai365/how-to-build-a-blog-website-using-html-css-and-host-it-in-github-and-deploy-it-to-vercel-4dd6</guid>
      <description>&lt;p&gt;In this blog, we will learn how to build a website and how to host it in GitHub and Deploy it to Vercel.&lt;/p&gt;

&lt;p&gt;Lets create a folder name first and open that folder in Vscode.&lt;/p&gt;

&lt;p&gt;Once the folder is created in vscode, lets create two files one index.html and another one style.css and link the CSS to HTML file.&lt;/p&gt;

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

&lt;p&gt;once you finished writing code we will need to host into GitHub. so lets create an account by going to the GitHub Website.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;a href="https://github.com" rel="noopener noreferrer"&gt;https://github.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Okay we have created an account so now we can host our code into GitHub. Here is the simple instructions on how to create a new repository for the specific project and how to push our code into that Repository.&lt;/p&gt;

&lt;p&gt;Create a new repository for your project&lt;/p&gt;

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

&lt;p&gt;Name the Meaningful Repository Name and hit Create.&lt;/p&gt;

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

&lt;p&gt;Go to your VScode and Open the code you want to push into GitHub.&lt;/p&gt;

&lt;p&gt;Open Terminal in VScode&lt;/p&gt;

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

&lt;p&gt;Write “git init” cmd in termimal &lt;/p&gt;

&lt;p&gt;You will get this message.&lt;/p&gt;

&lt;p&gt;(Initialized empty Git repository in /Users/rajeshrai/Desktop/DEV/Dented Code/css animation 1/.git/)&lt;/p&gt;

&lt;p&gt;Go back to GitHub and open the repo you just created.&lt;/p&gt;

&lt;p&gt;echo "# black-friday-animation" &amp;gt;&amp;gt; README.md&lt;br&gt;
git init&lt;br&gt;
git add README.md&lt;br&gt;
git commit -m "first commit"&lt;br&gt;
git branch -M main&lt;br&gt;
git remote add origin &lt;a href="https://github.com/Rarai365/black-friday-animation.git" rel="noopener noreferrer"&gt;https://github.com/Rarai365/black-friday-animation.git&lt;/a&gt;&lt;br&gt;
git push -u origin main&lt;/p&gt;

&lt;p&gt;copy the highlighted one and paste into VScode terminal after “git init” cmd.&lt;/p&gt;

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

&lt;p&gt;Now they are linked, you can push your code to GitHub.&lt;/p&gt;

&lt;p&gt;1st cmd: “git add”&lt;/p&gt;

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

&lt;p&gt;2nd cmd: git commit -m “some description”&lt;/p&gt;

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

&lt;p&gt;3rd cmd: “git push -u origin main”&lt;/p&gt;

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

&lt;p&gt;Go back to your GitHub and refresh the repo. You will see your code being pushed into GirHub.&lt;/p&gt;

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

&lt;p&gt;Now to deploy this code to vercel, go to your Vercel account or create one with your GitHub Account.&lt;/p&gt;

&lt;p&gt;Once the account is created, you will see “Add New” option in vercel. Click that and select project.&lt;/p&gt;

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

&lt;p&gt;Once you choose project, it will ask you to import your github projects. In our case, we choose the repo we created earlier “black-Friday-animation”.&lt;/p&gt;

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

&lt;p&gt;After importing, Hit Deploy.&lt;/p&gt;

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

&lt;p&gt;Congratulation, You have successfully Deployed your project on vercel.&lt;/p&gt;

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

&lt;p&gt;After deploying if you go to your dashboard, you will see something like this. &lt;/p&gt;

&lt;p&gt;You can click the domain link to open your project on the browser and you can also send it to your friends.&lt;/p&gt;

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

</description>
    </item>
  </channel>
</rss>
