<?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: Jyoti Jingar</title>
    <description>The latest articles on DEV Community by Jyoti Jingar (@jyoti_jingar).</description>
    <link>https://dev.to/jyoti_jingar</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%2F2093002%2F33082489-01d3-42bf-b334-f56a55d95fe8.png</url>
      <title>DEV Community: Jyoti Jingar</title>
      <link>https://dev.to/jyoti_jingar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jyoti_jingar"/>
    <language>en</language>
    <item>
      <title>Building a Menu-Driven List Management System in Python</title>
      <dc:creator>Jyoti Jingar</dc:creator>
      <pubDate>Fri, 16 Jan 2026 18:00:29 +0000</pubDate>
      <link>https://dev.to/jyoti_jingar/building-a-menu-driven-list-management-system-in-python-1cac</link>
      <guid>https://dev.to/jyoti_jingar/building-a-menu-driven-list-management-system-in-python-1cac</guid>
      <description>&lt;p&gt;This article demonstrates how to create a simple menu-driven program in Python to perform CRUD operations on a list.&lt;br&gt;
It helps beginners understand functions, conditionals, loops, and basic data handling through a practical example.&lt;/p&gt;

&lt;h4&gt;
  
  
  Code
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;data = []

# def insert(list1, value):
#     list1.append(value)
#     return "Value added successfully!"

def insert(data):
    user_input = input("Enter values (space or comma separated): ")

    items = user_input.replace(",", " ").split()

    for item in items:
        data.append(int(item))

    return "Values added successfully!"


def display(list1):
    return "No records" if not list1 else list1

def update(list1, old_value, new_value):
    if old_value in list1:
        index = list1.index(old_value)
        list1[index] = new_value
        return "Item updated successfully"
    return "Item not found"

def searching(list1, value):
    if value in list1:
        return list1.index(value) + 1
    return -1

def delete_item(list1, value):
    if value in list1:
        list1.remove(value)
        return "Item deleted successfully"
    return "Item not found"

def sort_list(list1):
    list1.sort()
    return list1

def reverse_list(list1):
    list1.reverse()
    return list1

while True:
    print("\n----- Management System -----")
    print("1. Add Value")
    print("2. Display Values")
    print("3. Update Value")
    print("4. Search Value")
    print("5. Delete Value")
    print("6. Sort List")
    print("7. Reverse List")
    print("0. Exit")

    choice = int(input("Enter your choice: "))

    match choice:
        case 1:
            # val = int(input("Enter value: "))
            print(insert(data))

        case 2:
            print(display(data))

        case 3:
            old = int(input("Enter old value: "))
            new = int(input("Enter new value: "))
            print(update(data, old, new))

        case 4:
            val = int(input("Enter value to search: "))
            pos = searching(data, val)
            print(f"Found at position {pos}" if pos != -1 else "Item not found")

        case 5:
            val = int(input("Enter value to delete: "))
            print(delete_item(data, val))

        case 6:
            print("Sorted List:", sort_list(data))

        case 7:
            print("Reversed List:", reverse_list(data))

        case 0:
            print("You are exited")
            break

        case _:
            print("Wrong choice")

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

&lt;/div&gt;



</description>
      <category>beginners</category>
      <category>codenewbie</category>
      <category>python</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>MINI PROJECT: String Analyzer</title>
      <dc:creator>Jyoti Jingar</dc:creator>
      <pubDate>Sat, 10 Jan 2026 06:58:41 +0000</pubDate>
      <link>https://dev.to/jyoti_jingar/mini-project-string-analyzer-3hcm</link>
      <guid>https://dev.to/jyoti_jingar/mini-project-string-analyzer-3hcm</guid>
      <description>&lt;p&gt;&lt;strong&gt;📌 Features of String Analyzer&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Count total characters&lt;/li&gt;
&lt;li&gt;Count vowels &amp;amp; consonants&lt;/li&gt;
&lt;li&gt;Count digits &amp;amp; special characters&lt;/li&gt;
&lt;li&gt;Count words&lt;/li&gt;
&lt;li&gt;Reverse the string&lt;/li&gt;
&lt;li&gt;Check palindrome&lt;/li&gt;
&lt;li&gt;Find frequency of each character&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;🧾 Input Example&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter string: Hello World 123!

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;🧠 Logic Flow (Traditional Thinking)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input → Loop → Condition → Count → Output

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Code (Complete)&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;s = input("Enter string: ")

vowels = 0
consonants = 0
digits = 0
spaces = 0
special = 0

for ch in s:
    if ch.lower() in "aeiou":
        vowels += 1
    elif ch.isalpha():
        consonants += 1
    elif ch.isdigit():
        digits += 1
    elif ch == " ":
        spaces += 1
    else:
        special += 1

# Word count
words = len(s.split())

# Reverse string
reverse_str = s[::-1]

# Palindrome check
if s.replace(" ", "").lower() == reverse_str.replace(" ", "").lower():
    palindrome = "Yes"
else:
    palindrome = "No"

# Character frequency
freq = {}
for ch in s:
    freq[ch] = freq.get(ch, 0) + 1

print("\n--- String Analysis Report ---")
print("Total characters:", len(s))
print("Words:", words)
print("Vowels:", vowels)
print("Consonants:", consonants)
print("Digits:", digits)
print("Spaces:", spaces)
print("Special characters:", special)
print("Reversed string:", reverse_str)
print("Palindrome:", palindrome)
print("Character Frequency:", freq)

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;📤 Output Example&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Enter string: jyoti jingar

--- String Analysis Report ---
Total characters: 12
Words: 2
Vowels: 4
Consonants: 7
Digits: 0
Spaces: 1
Special characters: 0
Reversed string: ragnij itoyj
Palindrome: No
Character Frequency: {'j': 2, 'y': 1, 'o': 1, 't': 1, 'i': 2, ' ': 1, 'n': 1, 'g': 1, 'a': 1, 'r': 1} 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>beginners</category>
      <category>python</category>
      <category>showdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>How to Work with MySQL and Express.js Using MVC Architecture</title>
      <dc:creator>Jyoti Jingar</dc:creator>
      <pubDate>Sat, 03 Jan 2026 11:58:13 +0000</pubDate>
      <link>https://dev.to/jyoti_jingar/how-to-work-with-mysql-and-expressjs-using-mvc-architecture-24i2</link>
      <guid>https://dev.to/jyoti_jingar/how-to-work-with-mysql-and-expressjs-using-mvc-architecture-24i2</guid>
      <description>&lt;p&gt;Learn how to connect MySQL with Express.js using the MVC architecture. This article covers database setup, models, controllers, and routes to help beginners build clean and structured REST APIs with confidence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to Download mysql community server and mysql command in cmd&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How to Download mysql community server : &lt;a href="https://medium.com/@jyotijingar/how-to-mysql-community-server-4735caa3b911" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;MYSQL Command: &lt;a href="https://medium.com/@jyotijingar/basic-mysql-command-d15c5d013340" rel="noopener noreferrer"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install Package:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install express mysql2 dotenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Folder structure:&lt;/strong&gt;&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%2Fsjhx0eyqw44rrmh6o9il.webp" 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%2Fsjhx0eyqw44rrmh6o9il.webp" alt=" " width="385" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;config/db.js&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const mysql = require("mysql2");

const db = mysql.createPool({
  host: process.env.HOST,
  user: process.env.USER,
  password: process.env.PASSWORD,
  database: process.env.DBNAME
});

module.exports = db;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;models/userModel.js&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const db = require("../config/db");

exports.getAllUsers = (callback) =&amp;gt; {
  db.query("SELECT * FROM users", callback);
};

exports.createUser = (data, callback) =&amp;gt; {
  db.query(
    "INSERT INTO users (name, email) VALUES (?, ?)",
    [data.name, data.email],
    callback
  );
};

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;controllers/userController.js&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const User = require("../models/userModel");

exports.getUsers = (req, res) =&amp;gt; {
    User.getAllUsers((err, results) =&amp;gt; {
        if (err) return res.status(500).json({ error: err });
        res.json({
            success:true,
            results
        });
    });
};

exports.addUser = (req, res) =&amp;gt; {
    console.log(req.body)
    User.createUser(req.body, (err, result) =&amp;gt; {
        if (err) return res.status(500).json({ error: err });
        res.json({ message: "User added successfully",result });
    });
};

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;routes/userRoutes.js&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require("express");
const router = express.Router();
const userController = require("../controllers/userController");

router.get("/", userController.getUsers);
router.post("/", userController.addUser);

module.exports = router;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;server.js&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const express = require('express')
const app = express()
require('dotenv').config()
const port = process.env.PORT || 3000

app.use(express.json());
app.use(express.urlencoded());
app.get('/', (req, res) =&amp;gt; res.send('Hello World!'))


const userRoutes = require("./routes/userRoutes");
app.use("/api/users", userRoutes);
app.listen(port, () =&amp;gt; console.log(`Example app listening on port http://localhost:${port}`))

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

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Behind the Scenes of TypeScript: Understanding the Lexer, Parser, Binder, Checker, and Emitter</title>
      <dc:creator>Jyoti Jingar</dc:creator>
      <pubDate>Sat, 27 Dec 2025 17:30:10 +0000</pubDate>
      <link>https://dev.to/jyoti_jingar/behind-the-scenes-of-typescript-understanding-the-lexer-parser-binder-checker-and-emitter-3hdh</link>
      <guid>https://dev.to/jyoti_jingar/behind-the-scenes-of-typescript-understanding-the-lexer-parser-binder-checker-and-emitter-3hdh</guid>
      <description>&lt;p&gt;Explore how the TypeScript compiler works internally — from source code to JavaScript — by understanding Lexer, Parser, Binder, Checker, and Emitter&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%2Fu1cnc8kzhflmgqibr7xg.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%2Fu1cnc8kzhflmgqibr7xg.png" alt=" " width="800" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🚀 Introduction
&lt;/h2&gt;

&lt;p&gt;TypeScript is widely used for building scalable and maintainable JavaScript applications.&lt;br&gt;&lt;br&gt;
But have you ever wondered &lt;strong&gt;what actually happens behind the scenes when TypeScript code is compiled?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The TypeScript compiler follows a well-defined pipeline that converts &lt;code&gt;.ts&lt;/code&gt; files into plain JavaScript.&lt;br&gt;&lt;br&gt;
Understanding this internal workflow helps developers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Debug type-related issues more effectively
&lt;/li&gt;
&lt;li&gt;Write better, predictable TypeScript code
&lt;/li&gt;
&lt;li&gt;Understand compiler errors deeply instead of guessing
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In this article, we’ll break down the &lt;strong&gt;TypeScript compilation process step by step&lt;/strong&gt;.&lt;/p&gt;


&lt;h2&gt;
  
  
  🧠 TypeScript Compilation Overview
&lt;/h2&gt;

&lt;p&gt;When you run the TypeScript compiler (&lt;code&gt;tsc&lt;/code&gt;), it does &lt;strong&gt;much more than just removing types&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The process is divided into these main phases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Lexer (Tokenizer)&lt;/li&gt;
&lt;li&gt;Parser&lt;/li&gt;
&lt;li&gt;Binder&lt;/li&gt;
&lt;li&gt;Type Checker&lt;/li&gt;
&lt;li&gt;Transformer&lt;/li&gt;
&lt;li&gt;Emitter&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Each phase has a clear responsibility, and together they convert TypeScript into JavaScript.&lt;/p&gt;


&lt;h2&gt;
  
  
  1. Lexer (Tokenizer)
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Lexer&lt;/strong&gt; is the first stage of the compiler.&lt;/p&gt;
&lt;h3&gt;
  
  
  What does it do?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Reads raw TypeScript source code&lt;/li&gt;
&lt;li&gt;Breaks it into small units called &lt;strong&gt;tokens&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Ignores whitespace and comments&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let count: number = 10;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Lexer converts to tokens:
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;["let", "x", ":", "number", "=", "10", ";"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Why important:&lt;/strong&gt; It simplifies code for the parser.&lt;/p&gt;


&lt;h2&gt;
  
  
  2. Parser (AST Builder)
&lt;/h2&gt;

&lt;p&gt;Parser converts tokens into an &lt;strong&gt;AST (Abstract Syntax Tree)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example AST structure:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;VariableStatement
 └─ VariableDeclaration
       ├─ name: x
       ├─ type: number
       └─ initializer: 10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why important:&lt;/strong&gt; All further operations (type checking, transformation) run on this AST.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Binder (Scope &amp;amp; Symbol Table Maker)
&lt;/h2&gt;

&lt;p&gt;The binder walks the AST and creates:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✔ Scopes&lt;br&gt;
✔ Symbol tables&lt;br&gt;
✔ Variable/function references&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Scope 1 (global)
  └─ symbol: x → type:number
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why important:&lt;/strong&gt; The type checker needs this to resolve identifiers.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Type Checker
&lt;/h2&gt;

&lt;p&gt;This is the &lt;strong&gt;heart of TypeScript&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;✔ Type inference&lt;br&gt;
✔ Type compatibility checks&lt;br&gt;
✔ Error reporting&lt;br&gt;
✔ Resolve generics&lt;br&gt;
✔ Check function signatures&lt;br&gt;
✔ Check return types&lt;br&gt;
✔ Narrowing, control-flow analysis&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let x: number = "hello";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Type checker throws:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Type '"hello"' is not assignable to type 'number'.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  5. Transformer (TS → JS Conversion)
&lt;/h2&gt;

&lt;p&gt;Transforms TypeScript AST to JavaScript AST.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class User {
  constructor(public name: string) {}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Transform output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"use strict";
class User {
    constructor(name) {}
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  6. Emitter (Generate Final JavaScript + Source Maps)
&lt;/h2&gt;

&lt;p&gt;Finally, JavaScript code is printed.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.js
.js.map
.d.ts (if enabled)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>javascript</category>
      <category>computerscience</category>
      <category>typescript</category>
      <category>learning</category>
    </item>
    <item>
      <title>Javascript Interview Logic Question</title>
      <dc:creator>Jyoti Jingar</dc:creator>
      <pubDate>Fri, 26 Dec 2025 08:26:44 +0000</pubDate>
      <link>https://dev.to/jyoti_jingar/javascript-interview-logic-question-25po</link>
      <guid>https://dev.to/jyoti_jingar/javascript-interview-logic-question-25po</guid>
      <description>&lt;p&gt;&lt;strong&gt;Predict the output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log("20" - 5 + "10");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What is the final output?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var a = "10";
var b = 5;
console.log(a * b + a);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Identify the error (if any):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const a = 10;
{
  const a = 20;
  console.log(a);
}
console.log(a);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What kind of error will occur?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const x;
x = 100;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What will happen?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log(b);
var b = 10;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Write logic to swap two numbers?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Predict the output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var x = "10";
var x = 10;
console.log(x + 5);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What will be printed?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var a = 5;
if (true) {
  var a = 10;
}
console.log(a);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Will this code run successfully? If yes, what is the output?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var a;
console.log(a);
a = 100;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Write logic to calculate the sum of four numbers using currying?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the main difference between forEach and map?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is the difference in iteration behavior between a normal loop and a for…in loop when an array has missing elements?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write a program to find the sum of all array elements using reduce?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Write a program to check whether a value exists in an array?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What will be printed?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const arr = [12, "12", 15];
const result = arr.filter((ele) =&amp;gt; ele === 12);
console.log(result);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Which loop skips empty elements and why?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const arr = [ , 2, , 4];

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How can object values be accessed?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What will be the output?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const user = {
  name: "A",
  age: 25,
  age : 32
};
console.log(user.age);

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What will be the output?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const obj = {
  info: {
    city: "Ahmedabad"
  }
};
console.log(obj.info2);

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What will be the output, if any error then how do handle it?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const obj = {
  info: {
    city: "Ahmedabad"
  }
};
console.log(obj.info2.city);

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What will be the output?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const obj = {
  id: 10,
  show: () =&amp;gt; {
    return this.id;
  }
};
console.log(obj.show());

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Write a program to add new properties to an object?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What will be the output?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localStorage.setItem("count", 10);
localStorage.setItem("count", 20);
console.log(localStorage.getItem("count"));

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What will be the output? If any error then how to handle it&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;localStorage.setItem("user", { name: "A" });
console.log(localStorage.getItem("user"));

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;What will be the output?&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;console.log("start");
setTimeout(() =&amp;gt; {
  console.log("timeout");
}, 0);
console.log("end");

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;what is API and to write a API Method with syntax?&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>interview</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Operator Overloading (Binary &amp; Unary) in C++</title>
      <dc:creator>Jyoti Jingar</dc:creator>
      <pubDate>Tue, 11 Nov 2025 08:28:41 +0000</pubDate>
      <link>https://dev.to/jyoti_jingar/operator-overloading-binary-unary-in-c-19h9</link>
      <guid>https://dev.to/jyoti_jingar/operator-overloading-binary-unary-in-c-19h9</guid>
      <description>&lt;p&gt;&lt;strong&gt;Definition&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Operator overloading&lt;/strong&gt; allows you to redefine or “overload” the behavior of C++ operators (+, -, &lt;em&gt;, ++, etc.) for **user-defined data types (classes/objects).&lt;/em&gt;*&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;return_type operator operator_symbol (parameters) {
    // operation definition
}

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

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Complex operator + (Complex obj);

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Why Use Operator Overloading?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Improves code readability – You can write expressions like obj1 + obj2 instead of calling a function.&lt;/li&gt;
&lt;li&gt;Extends usability of operators to user-defined types (like classes).&lt;/li&gt;
&lt;li&gt;Makes code intuitive – Works naturally with custom data types such as Complex, Matrix, Vector, etc.&lt;/li&gt;
&lt;li&gt;Encapsulation – Keeps the logic of object operations within the class.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Unary Operator Overloading (Example: ++ operator)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

class Number {
    int x;
public:
    Number(int a = 0) {
        x = a;
    }

    // Unary operator overloading for ++
    void operator ++() {
        x = x + 1;   // x ko increase kar diya
    }

    void display() {
        cout &amp;lt;&amp;lt; "Value of x: " &amp;lt;&amp;lt; x &amp;lt;&amp;lt; endl;
    }
};

int main() {
    Number n1(5);

    cout &amp;lt;&amp;lt; "Before increment: ";
    n1.display();

    ++n1;   // yahan operator overloading call hui

    cout &amp;lt;&amp;lt; "After increment: ";
    n1.display();

    return 0;
}

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Before increment: Value of x: 5
After increment: Value of x: 6

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example Without Constructor (Unary Operator Overloading)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

class Number {
public:
    int x;  // public rakha taki direct assign kar sake

    // Unary operator overloading
    void operator ++() {
        x = x + 1;
    }

    void show() {
        cout &amp;lt;&amp;lt; "Value of x: " &amp;lt;&amp;lt; x &amp;lt;&amp;lt; endl;
    }
};

int main() {
    Number n1;
    n1.x = 10;   // value manually set ki, constructor nahi use hua

    ++n1;        // operator overloading call hua
    n1.show();

    return 0;
}

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Binary Operator Overloading (Example: + operator)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

class Add {
    int a;
public:
    Add(int x = 0) {
        a = x;
    }

    // Binary operator overloading for +
    Add operator + (Add obj) {
        Add temp;
        temp.a = a + obj.a;  // dono object ki value add
        return temp;
    }

    void display() {
        cout &amp;lt;&amp;lt; "Sum: " &amp;lt;&amp;lt; a &amp;lt;&amp;lt; endl;
    }
};

int main() {
    Add obj1(5), obj2(10), obj3;

    obj3 = obj1 + obj2;   // operator overloading call hui

    obj3.display();

    return 0;
}

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sum: 15

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  Example Without Constructor (Binary Operator Overloading)
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

class Add {
public:
    int a;

    Add operator + (Add obj) {
        Add temp;
        temp.a = a + obj.a;
        return temp;
    }

    void show() {
        cout &amp;lt;&amp;lt; "Sum: " &amp;lt;&amp;lt; a &amp;lt;&amp;lt; endl;
    }
};

int main() {
    Add obj1, obj2, obj3;

    obj1.a = 5;
    obj2.a = 15;

    obj3 = obj1 + obj2;   // operator overloading call hua
    obj3.show();

    return 0;
}

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

&lt;/div&gt;



</description>
      <category>beginners</category>
      <category>cpp</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Virtual Functions, Abstract Classes, and Interfaces in C++</title>
      <dc:creator>Jyoti Jingar</dc:creator>
      <pubDate>Tue, 11 Nov 2025 07:56:17 +0000</pubDate>
      <link>https://dev.to/jyoti_jingar/virtual-functions-abstract-classes-and-interfaces-in-c-31k5</link>
      <guid>https://dev.to/jyoti_jingar/virtual-functions-abstract-classes-and-interfaces-in-c-31k5</guid>
      <description>&lt;h2&gt;
  
  
  1. Virtual Function
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt; A virtual function is a member function in a base class that can be overridden in a derived class. It allows runtime polymorphism, meaning the function that gets called is determined at runtime based on the object type.&lt;br&gt;
&lt;strong&gt;Syntax:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Base {
public:
    virtual void show() {
        cout &amp;lt;&amp;lt; "Base class function" &amp;lt;&amp;lt; endl;
    }
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

class Base {
public:
    virtual void display() {
        cout &amp;lt;&amp;lt; "Display from Base class" &amp;lt;&amp;lt; endl;
    }
};

class Derived : public Base {
public:
    void display() override {
        cout &amp;lt;&amp;lt; "Display from Derived class" &amp;lt;&amp;lt; endl;
    }
};

int main() {
    Base* ptr;
    Derived d;
    ptr = &amp;amp;d;
    ptr-&amp;gt;display(); // Output: Display from Derived class
    return 0;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt; Since display() is declared virtual, the compiler calls the Derived class version at runtime.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Abstract Class (Pure Virtual Function)
&lt;/h2&gt;

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

&lt;ul&gt;
&lt;li&gt;An abstract class is a class that cannot be instantiated directly.&lt;/li&gt;
&lt;li&gt;It contains at least one pure virtual function, which is a function declared with = 0.&lt;/li&gt;
&lt;li&gt;Derived classes must override pure virtual functions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Syntax:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Base {
public:
    virtual void show() = 0; // Pure virtual function
};

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

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

class Shape {
public:
    virtual void area() = 0; // Pure virtual function
};

class Circle : public Shape {
public:
    void area() override {
        cout &amp;lt;&amp;lt; "Area = πr²" &amp;lt;&amp;lt; endl;
    }
};

int main() {
    // Shape s; // ❌ Error: cannot create object of abstract class
    Circle c;
    c.area(); // Output: Area = πr²
    return 0;
}

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

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;Shape is an abstract class because it has a pure virtual function.&lt;/li&gt;
&lt;li&gt;Circle provides an implementation, so it can be instantiated.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Interface
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Definition:&lt;/strong&gt;C++ doesn’t have a keyword interface like Java,&lt;br&gt;
but an interface can be implemented using an abstract class where all functions are pure virtual.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Syntax:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Interface {
public:
    virtual void func1() = 0;
    virtual void func2() = 0;
};

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

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
using namespace std;

class Drawable {
public:
    virtual void draw() = 0;
    virtual void resize() = 0;
};

class Rectangle : public Drawable {
public:
    void draw() override {
        cout &amp;lt;&amp;lt; "Drawing Rectangle" &amp;lt;&amp;lt; endl;
    }
    void resize() override {
        cout &amp;lt;&amp;lt; "Resizing Rectangle" &amp;lt;&amp;lt; endl;
    }
};

int main() {
    Rectangle r;
    r.draw();
    r.resize();
    return 0;
}

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

&lt;/div&gt;



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

&lt;ul&gt;
&lt;li&gt;Here, Drawable acts as an interface — all functions are pure virtual.&lt;/li&gt;
&lt;li&gt;Any class implementing this must define all the functions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1. Why use Virtual Functions
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt;&lt;br&gt;
To achieve &lt;strong&gt;runtime polymorphism&lt;/strong&gt; — that is, making the program decide at runtime which function to call depending on the object type.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without virtual function:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Base* b = new Derived();
b-&amp;gt;show();   // Calls Base version ❌

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;With virtual function:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Base* b = new Derived();
b-&amp;gt;show();   // Calls Derived version ✅

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Use case:&lt;/strong&gt; When you want to write &lt;strong&gt;generic code&lt;/strong&gt; that works with base class pointers or references, but executes &lt;strong&gt;derived class behavior&lt;/strong&gt; dynamically.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Why use Abstract Classes (Pure Virtual Functions)
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt;&lt;br&gt;
To define a common blueprint for derived classes while forcing them to implement certain behavior.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key idea:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can’t create objects of an abstract class.&lt;/li&gt;
&lt;li&gt;You use it to ensure every derived class implements specific functions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Why use Interface
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Purpose:&lt;/strong&gt;&lt;br&gt;
To define a &lt;strong&gt;set of rules&lt;/strong&gt; or contracts that multiple unrelated classes can follow.&lt;/p&gt;

&lt;p&gt;In C++, an interface is just an &lt;strong&gt;abstract class with only pure virtual&lt;/strong&gt; functions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use case:&lt;/strong&gt;&lt;br&gt;
Suppose you have different systems —&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;like a Printer, Scanner, and Camera —&lt;/li&gt;
&lt;li&gt;and all should be “connectable” via a Connectable interface.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class Connectable {
public:
    virtual void connect() = 0;
    virtual void disconnect() = 0;
};

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

&lt;/div&gt;



</description>
      <category>cpp</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
