<?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: JOYDIP PAUL</title>
    <description>The latest articles on DEV Community by JOYDIP PAUL (@joydippaul).</description>
    <link>https://dev.to/joydippaul</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%2F1032604%2F3e7e472b-f8fc-4cd2-995c-b651d2ce55a5.jpeg</url>
      <title>DEV Community: JOYDIP PAUL</title>
      <link>https://dev.to/joydippaul</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joydippaul"/>
    <language>en</language>
    <item>
      <title>Understanding Angular Signals with Real Examples (বাংলায় সহজভাবে)</title>
      <dc:creator>JOYDIP PAUL</dc:creator>
      <pubDate>Sun, 26 Oct 2025 15:20:59 +0000</pubDate>
      <link>https://dev.to/joydippaul/understanding-angular-signals-with-real-examples-baanlaayy-shjbhaabe-4p5g</link>
      <guid>https://dev.to/joydippaul/understanding-angular-signals-with-real-examples-baanlaayy-shjbhaabe-4p5g</guid>
      <description>&lt;p&gt;Angular 16+ এ এসেছে Signals — একদম নতুন reactive concept। এই ব্লগে সহজ বাংলায় দেখানো হয়েছে Signals কীভাবে কাজ করে, কেন দরকার, আর কিভাবে তুমি তোমার কোডে reactive behavior আনতে পারো। &lt;/p&gt;

&lt;p&gt;Angular Signals vs Normal Variables — পার্থক্যটা আসলে কোথায়?&lt;/p&gt;

&lt;p&gt;Angular 16 থেকে শুরু করে একটা নতুন reactive concept এসেছে — Signal।&lt;br&gt;
অনেকে ভাবে, “আরে ভাই, এটা তো আরেকটা state variable, নতুন কিছুর দরকার কী?”&lt;br&gt;
কিন্তু একবার কোডে ঢুকলেই বোঝা যায় — Signal আসলে একেবারে অন্য লেভেলের জিনিস।&lt;/p&gt;
&lt;h4&gt;
  
  
  একটা সিম্পল উদাহরণ
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;constructor() {
  this.withOutSignal();
  this.withSignal();
}

withOutSignal() {
  let x = 10;
  let y = 20;
  let z = x + y;
  console.log('[Normal] Initial Sum:', z);

  x = 15;
  console.log('[Normal] After Change:', z);
}

withSignal() {
  const x = signal(10);
  const y = signal(20);
  const z = computed(() =&amp;gt; x() + y());

  console.log('⚡ [Signal] Initial Sum:', z());

  x.set(150);
  console.log('⚡ [Signal] After Change:', z());
}


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

&lt;/div&gt;

&lt;h4&gt;
  
  
  Output:
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;[Normal] Initial Sum: 30&lt;br&gt;
 [Normal] After Change: 30&lt;br&gt;
 [Signal] Initial Sum: 30&lt;br&gt;
 [Signal] After Change: 170&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
এখানে প্রথমটা (withOutSignal) তে x এর মান পাল্টালেও z আপডেট হচ্ছে না।&lt;br&gt;
কিন্তু দ্বিতীয়টা (withSignal) তে Signal ব্যবহার করায় x এর মান বদলাতেই z রিয়েল টাইমে 170 হয়ে গেছে।&lt;/p&gt;
&lt;h4&gt;
  
  
  পার্থক্যটা কোথায়?
&lt;/h4&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;ধরন&lt;/th&gt;
&lt;th&gt;Reactive?&lt;/th&gt;
&lt;th&gt;আপডেট হয়?&lt;/th&gt;
&lt;th&gt;আউটপুট&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;সাধারণ ভ্যারিয়েবল&lt;/td&gt;
&lt;td&gt;না&lt;/td&gt;
&lt;td&gt;না&lt;/td&gt;
&lt;td&gt;30&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Signal + Computed&lt;/td&gt;
&lt;td&gt;হ্যাঁ&lt;/td&gt;
&lt;td&gt;হয়&lt;/td&gt;
&lt;td&gt;30 → 170&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Signal হলো “reactive variable” — মানে, একে Angular ট্র্যাক করে রাখে।&lt;br&gt;
যখনই signal-এর মান বদলাবে, সেটার ওপর নির্ভর করা সব জায়গায় মান আপডেট হবে।&lt;br&gt;
আর computed() মানে হচ্ছে “যে ভ্যারিয়েবলটা অন্য signal গুলোর উপর নির্ভর করে”।&lt;/p&gt;

&lt;p&gt;🛒 Real-Life Example: Add to Cart&lt;/p&gt;

&lt;p&gt;ধরো তুমি একটা eCommerce অ্যাপ বানাচ্ছো।&lt;br&gt;
Signal ছাড়া আমরা সাধারণত এমন করি&lt;br&gt;
&lt;/p&gt;

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

function addToCart() {
  cartItems++;
  console.log('Items in cart:', cartItems);
}

addToCart(); // 1
addToCart(); // 2

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

&lt;/div&gt;



&lt;p&gt;এখানে cartItems সাধারণ ভ্যারিয়েবল — ঠিকই কাজ করছে,&lt;br&gt;
কিন্তু Angular এটাকে reactive ভাবে ট্র্যাক করছে না।&lt;/p&gt;

&lt;p&gt;এখন যদি Signal ব্যবহার করি&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import { signal, computed, effect } from '@angular/core';

const cart = signal(0);
const pricePerItem = 500;
const totalPrice = computed(() =&amp;gt; cart() * pricePerItem);

// Automatically log when cart updates
effect(() =&amp;gt; {
  console.log(`Items: ${cart()}, Total: ${totalPrice()}৳`);
});

function addToCart() {
  cart.update(c =&amp;gt; c + 1);
}

addToCart(); // Items: 1, Total: 500৳
addToCart(); // Items: 2, Total: 1000৳
addToCart(); // Items: 3, Total: 1500৳

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

&lt;/div&gt;



&lt;p&gt;এখানে effect() ব্যবহার করার ফলে কনসোলে নিজে থেকেই cart count আর total price আপডেট হয়ে প্রিন্ট হচ্ছে — কোনো manual console.log() লাগছে না!&lt;/p&gt;

&lt;h3&gt;
  
  
  Signal মানে হলো জীবন্ত ভ্যারিয়েবল — মান বদলালে, তার ওপর নির্ভর করা সব জায়গা নিজে থেকেই বদলে যায়।
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;Written by: &lt;a href="https://joydipjd.netlify.app" rel="noopener noreferrer"&gt;Joydip Paul&lt;/a&gt;&lt;br&gt;
Web Developer&lt;/em&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>angular</category>
      <category>signals</category>
      <category>store</category>
    </item>
    <item>
      <title>JavaScript Guess the Output: মজার কিছু ধাঁধা! 🚀</title>
      <dc:creator>JOYDIP PAUL</dc:creator>
      <pubDate>Fri, 21 Mar 2025 16:47:41 +0000</pubDate>
      <link>https://dev.to/joydippaul/javascript-guess-the-output-mjaar-kichu-dhaandhaa-41ma</link>
      <guid>https://dev.to/joydippaul/javascript-guess-the-output-mjaar-kichu-dhaandhaa-41ma</guid>
      <description>&lt;p&gt;JavaScript-এর অদ্ভুত ও মজার কিছু ধাঁধা সমাধান করার জন্য প্রস্তুত? এই ব্লগে কিছু চমৎকার "Guess the Output" প্রশ্ন রয়েছে, যা নতুন ও অভিজ্ঞ ডেভেলপারদের জন্য সমানভাবে চ্যালেঞ্জিং হবে! 🔥&lt;/p&gt;

&lt;p&gt;চলুন দেখি আপনি কতটা সঠিক উত্তর দিতে পারেন! 🧠&lt;/p&gt;

&lt;p&gt;1️⃣ Array Destructuring&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, 20, 30, 40, 50];
console.log(a);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;40
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation: এখানে প্রথম তিনটি এলিমেন্ট স্কিপ করা হয়েছে, চতুর্থ এলিমেন্ট a তে অ্যাসাইন হয়েছে। তাই আউটপুট 40।&lt;/p&gt;

&lt;p&gt;2️⃣ Object Destructuring&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"John"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation: এখানে name প্রপার্টিটি অবজেক্ট থেকে ডিসট্রাকচার করা হয়েছে এবং এর মান "John"।&lt;/p&gt;

&lt;p&gt;3️⃣ Spread Operator with Arrays&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 = [1, 2, 3];
const newArr = [...arr, 4, 5];
console.log(newArr);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[1, 2, 3, 4, 5]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation: স্প্রেড অপারেটর ...arr পুরানো অ্যারেটি কপি করে নতুন অ্যারেতে যোগ করে।&lt;/p&gt;

&lt;p&gt;4️⃣ Spread Operator with Objects&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const obj1 = { a: 1, b: 2 };
const obj2 = { ...obj1, c: 3 };
console.log(obj2);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{ a: 1, b: 2, c: 3 }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation: এখানে obj1-এর কপি obj2 তে তৈরি করা হয়েছে এবং নতুন c: 3 প্রপার্টি যোগ হয়েছে।&lt;/p&gt;

&lt;p&gt;7️⃣ Hoisting&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(a);
var a = 5;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;undefined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation: var-এর hoisting হয়, কিন্তু এর মান অ্যাসাইনমেন্টের আগে undefined থাকে।&lt;/p&gt;

&lt;p&gt;8️⃣ Let vs Var Scope&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ReferenceError: x is not defined
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation: let ব্লক-স্কোপড হওয়ায় এটি বাইরে এক্সেসযোগ্য নয়।&lt;/p&gt;

&lt;p&gt;9️⃣ setTimeout Inside Loop&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (var i = 0; i &amp;lt; 3; i++) {
  setTimeout(() =&amp;gt; console.log(i), 1000);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;3
3
3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation: var ফাংশন-স্কোপড, তাই লুপ শেষে i এর মান 3 হয়ে যায় এবং প্রতিটি setTimeout সেই মান এক্সেস করে।&lt;/p&gt;

&lt;p&gt;🔟 Undefined vs Null&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let a;
console.log(a, typeof a);
console.log(null, typeof null);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;undefined "undefined"
null "object"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Explanation: undefined হল ভ্যারিয়েবলের ডিফল্ট মান, যেখানে null একটি ইন্টেনশনাল নাথিংনেস। জাভাস্ক্রিপ্টে এটি object টাইপ হিসেবে চিহ্নিত হয়।&lt;/p&gt;



&lt;h2&gt;
  
  
  শেষ কথা 🎯
&lt;/h2&gt;

&lt;p&gt;এই "Guess the Output" প্রশ্নগুলো JavaScript-এর মজার ও চমকপ্রদ দিকগুলোকে ভালোভাবে বুঝতে সাহায্য করবে। আপনি কটি সঠিকভাবে অনুমান করতে পেরেছেন? কমেন্টে জানাতে ভুলবেন না! 🚀&lt;/p&gt;

&lt;p&gt;JavaScript শিখতে থাকুন, কোড লিখতে থাকুন! 💙&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>interview</category>
      <category>frontend</category>
      <category>questions</category>
    </item>
    <item>
      <title>Creating Custom SCSS Breakpoints for Responsive Design</title>
      <dc:creator>JOYDIP PAUL</dc:creator>
      <pubDate>Fri, 14 Mar 2025 06:03:05 +0000</pubDate>
      <link>https://dev.to/joydippaul/creating-custom-scss-breakpoints-for-responsive-design-4njd</link>
      <guid>https://dev.to/joydippaul/creating-custom-scss-breakpoints-for-responsive-design-4njd</guid>
      <description>&lt;p&gt;In modern web development, responsive design ensures a seamless user experience across different screen sizes. SCSS provides a powerful way to manage breakpoints efficiently with mixins. In this blog, we will explore how to create custom SCSS breakpoints using mixins for flexible and maintainable styles.&lt;/p&gt;

&lt;p&gt;Why Use Custom SCSS Breakpoints?&lt;/p&gt;

&lt;p&gt;Using custom breakpoints in SCSS allows you to:&lt;/p&gt;

&lt;p&gt;Maintain cleaner and more readable code.&lt;/p&gt;

&lt;p&gt;Apply media queries efficiently without repetition.&lt;/p&gt;

&lt;p&gt;Easily adjust styles for different screen sizes by reusing mixins.&lt;/p&gt;

&lt;p&gt;Creating the Custom SCSS Breakpoints&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We will define two mixins: one for minimum-width breakpoints and another for maximum-width breakpoints.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;SCSS Mixin for Min-Width Breakpoints&lt;/p&gt;

&lt;p&gt;This mixin applies styles when the viewport is at least a specified width.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@mixin breakpoint-min($width) {
    @media only screen and (min-width: $width) {
        @content;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;SCSS Mixin for Max-Width Breakpoints&lt;/p&gt;

&lt;p&gt;This mixin applies styles when the viewport is at most a specified width.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@mixin breakpoint-max($width) {
    @media only screen and (max-width: $width) {
        @content;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Using the SCSS Breakpoint Mixins&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now, let’s see how we can use these mixins to apply responsive styles.&lt;/p&gt;

&lt;p&gt;Example: Styling for Mobile and Tablet Screens&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@include breakpoint-max(767px) {
    body {
        background-color: lightgray;
    }
}
&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;@include breakpoint-max(991px) {
     body {
        background-color: recebapurple;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Example: Applying Min-Width Breakpoints&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 breakpoint-min(1024px) {
    .navbar {
        display: flex;
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Applies Styles at 1024px and Above – The mixin ensures the styles inside it take effect only when the screen width is 1024px or larger.&lt;/li&gt;
&lt;li&gt;Uses a Custom Mixin – Calls breakpoint-min(1024px), which generates a min-width media query.&lt;/li&gt;
&lt;li&gt;Enables Flexbox for Navbar – The .navbar gets display: flex, making it a flexbox container for better alignment.&lt;/li&gt;
&lt;li&gt;Supports Responsive Design – Helps transition from a mobile-friendly layout to a more structured navbar on larger screens.&lt;/li&gt;
&lt;li&gt;Keeps Code Clean &amp;amp; Reusable – Using mixins avoids repetition and makes managing breakpoints easier and more maintainable.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Benefits of Using SCSS Breakpoint Mixins&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reusability: Define breakpoints once and use them throughout your stylesheets.&lt;/p&gt;

&lt;p&gt;Readability: Improves code organization and avoids redundant media queries.&lt;/p&gt;

&lt;p&gt;Maintainability: Easily modify breakpoints in a single place without affecting multiple files.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Using SCSS mixins for breakpoints enhances your workflow and helps maintain a scalable and well-structured codebase. Implementing custom breakpoint mixins ensures consistency and flexibility in your responsive designs.&lt;/p&gt;

&lt;p&gt;Give these mixins a try in your next project and experience the benefits of writing cleaner, more efficient SCSS!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>breakpoints</category>
      <category>responsive</category>
      <category>mixins</category>
    </item>
    <item>
      <title>বেম পদ্ধতি (BEM methodology)</title>
      <dc:creator>JOYDIP PAUL</dc:creator>
      <pubDate>Wed, 30 Aug 2023 08:59:11 +0000</pubDate>
      <link>https://dev.to/joydippaul/bem-pddhti-bem-methodology-26e3</link>
      <guid>https://dev.to/joydippaul/bem-pddhti-bem-methodology-26e3</guid>
      <description>&lt;p&gt;BEM (Block,Element,Modifier) এই পদ্ধতি ওয়েব ডেভেলপমেন্টে খুবই জনপ্রিয়। এটি আসলে সিএসএস (CSS) এর ক্লাস নেইম লিখার একটি পদ্ধতি যা একটি প্যাটার্নে লিখা হয়। এই প্যাটার্নকেই মূলত বেম পদ্ধতি বলা হয়।&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%2Fkmacuanynqkrlfy03ls3.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%2Fkmacuanynqkrlfy03ls3.png" alt="Image description" width="800" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ছোট প্রজেক্টের ক্ষেত্রে বেম ব্যবহার না করলেও বড় প্রজেক্টের ক্ষেত্রে বেম পদ্ধতি ব্যবহার করা গুরুত্বপূর্ন। কারণ বড় প্রজেক্টে মেইন্টেনেবল কোড লিখা হয়। মেইন্টেনেবল কোড বলতে বুঝায় অল্প সময়ে এবং অন্য কোনো কম্পোনেন্টে এফেক্ট ছাড়া সহজেই পরিবর্তন করা যায় এমন কোড। সিএসএস এর ক্ষেত্রে মেইন্টেনেবল কোড লিখার জন্যই বেম পদ্ধতি এত জনপ্রিয়।&lt;/p&gt;

&lt;p&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%2Fovbps1ra3ju7v9xp1zi7.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%2Fovbps1ra3ju7v9xp1zi7.png" alt="Image description" width="800" height="432"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;এখানে আমি  সিএসএস এর প্রিপ্রসেসর সাস ব্যবহার করেছি।&lt;br&gt;&lt;br&gt;
&lt;strong&gt;কোডপেন লিঙ্কঃ &lt;a href="https://codepen.io/joydippaul9/pen/ZEmKwzY" rel="noopener noreferrer"&gt;https://codepen.io/joydippaul9/pen/ZEmKwzY&lt;/a&gt;&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;&amp;lt;!-- HTML CODE --&amp;gt;

&amp;lt;div class="card"&amp;gt;
  &amp;lt;div class="card__image"&amp;gt;
    &amp;lt;img src="watch.png" alt="Watch" /&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div class="card__header"&amp;gt;
    &amp;lt;h2 class="card__header--title"&amp;gt;Smart Watch&amp;lt;/h2&amp;gt;
    &amp;lt;h2 class="card__header--price"&amp;gt;36$&amp;lt;/h2&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div class="card__description"&amp;gt;
      &amp;lt;p class="card__description--text"&amp;gt;Watch description&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div class="card__button"&amp;gt;
    &amp;lt;button class="card__button--primary"&amp;gt;Add to cart&amp;lt;/button&amp;gt;
    &amp;lt;button class="card__button--secondary"&amp;gt;View details&amp;lt;/button&amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;

&amp;lt;!-- SCSS CODE --&amp;gt;

.card {
  &amp;amp;__image {
    img {
    }
  }

  &amp;amp;__header {
    &amp;amp;--title {
    }
    &amp;amp;--price {
    }
  }

  &amp;amp;__description {
      &amp;amp;--text {
      }
  }

  &amp;amp;__button {
    .btn {
    }
    &amp;amp;--primary {
    }
    &amp;amp;--secondary {
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;বেম ব্যবহারের সুবিধাগুলি কী কী?&lt;/strong&gt;&lt;br&gt;
১। এই মার্কআপ অনেক সহজ। ডেভেলপারদের বুঝতে সময় কম লাগে।&lt;br&gt;
২। এক কম্পনেন্টের কোড অন্য কম্পনেন্টে কোডের সাথে কনফ্লিক্ট তৈরি করে না। নেমিং কনভেনশন এনং নেস্টেড আকারে কোড লিখার জন্য অন্য কোনো কম্পোনেন্টে এফেক্ট ছাড়া সহজেই পরিবর্তন করা যায় ।&lt;br&gt;
৩। ডিবাগিং অনেক দ্রুত করা যায়। &lt;br&gt;
৪। বেম একটি নেমিং কনভেনশন স্ট্রাকচার তৈরি করে, যা টিমের সদস্যদের মধ্যে একটি  স্থির নির্দেশনা প্রদান করে। &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;বেম ব্যবহারের অসুবিধাগুলি কী কী?&lt;/strong&gt;&lt;br&gt;
১। যখন ব্লক, এলিমেন্ট বা মডিফায়ারগুলি পরিবর্তন করতে হয়, তখন এই পরিবর্তন বারবার এবং এইচটিএমএল এবং সিএসএস ফাইলগুলিতে বিভিন্ন স্থানে পরিবর্তন করতে হতে পারে। &lt;/p&gt;

</description>
      <category>bem</category>
      <category>html</category>
      <category>scss</category>
    </item>
    <item>
      <title>লিনিয়ার সার্চ (Linear Search) ইন জাভাস্ক্রিপ্ট</title>
      <dc:creator>JOYDIP PAUL</dc:creator>
      <pubDate>Wed, 28 Jun 2023 17:37:01 +0000</pubDate>
      <link>https://dev.to/joydippaul/liniyyaar-saarc-linear-search-in-jaabhaaskriptt-4gb3</link>
      <guid>https://dev.to/joydippaul/liniyyaar-saarc-linear-search-in-jaabhaaskriptt-4gb3</guid>
      <description>&lt;p&gt;সার্চিং অ্যালগরিদমের মধ্যে সব চেয়ে সহজ অ্যালগরিদম হচ্ছে লিনিয়ার সার্চ অ্যালগরিদম। লিনিয়ার সার্চ মানে কোনো কিছু সরল রৈখিকভাবে খোঁজা। &lt;br&gt;
ধরোন একটি শপিং মলে একটি ব্লকে প্রথম সারিতে ২০ টি দোকান আছে। আপনি ১৬ নাম্বার দোকান খুঁজে বের করতে চান। তাহলে আপনি যদি ১ নাম্বার দোকান থেকে ২০ নাম্বার দোকান পর্যন্ত সরল রৈখিকভাবে খুঁজতে থাকেন তাহলে নিশ্চয়ই একটা সময় পর আপনার টার্গেট ১৬ নাম্বার দোকান খুঁজে পাবেন।&lt;br&gt;
এটাই হল linear search প্রক্রিয়া।&lt;/p&gt;

&lt;p&gt;ধরি, আমাদের কাছে একটি অ্যারে আছে&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;let numbers = [ 10, 12, 3, 52, 1, 25, 58, 65]&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;এবং আমাদের 25 সংখ্যাটি খুঁজে বের করতে হবে অর্থ্যাৎ,&lt;br&gt;
&lt;strong&gt;target value = 25&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;numbers অ্যারের মধ্যে target value আছে কি না তা আমাদের খুঁজে বের করতে হবে। target value লিস্টের কততম পজিশনে আছে তা জানা নেই। target value লিস্টের প্রথম পজিশনে থাকতে পারে, মধ্যখানেও থাকতে পারে আবার একেবারে শেষ পজিশনেও থাকতে পারে।&lt;/p&gt;

&lt;p&gt;numbers অ্যারের মধ্যে একটি লুপ চালাতে হবে। প্রতিবার লুপ চালাকালিন সময়ে কন্ডিশন চেক করতে হবে অ্যারের ইনডেক্স অ্যার টার্গেট ভ্যালূ সমান কিনা। যদি সমান হয় তাহলে সেই ইনডেক্স সংখ্যাটি রিটার্ন করবে, আর সমান না হলে অ্যারের শেষ পর্যন্ত লুপ চালবে।&lt;br&gt;
আসলে লিনিয়ার সার্চ হল, অ্যারের এর প্রথম ডাটা থেকে তুলনা করা হয়। যখনি অ্যারের ডাটা এর ভ্যালুর সাথে টার্গেট ভ্যালূ মিলে যাবে, তখন অ্যারের ইনডেক্স রিটার্ন করবে।&lt;/p&gt;

&lt;p&gt;কাজের ধাপ:&lt;/p&gt;

&lt;p&gt;১। প্রথমে একটি ফর লুপ তৈরি করতে হবে এবং লুপটি &lt;strong&gt;Array.length&lt;/strong&gt; পর্যন্ত চলবে।&lt;br&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%2Fykftqr74st4pe7lm7bzo.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%2Fykftqr74st4pe7lm7bzo.png" alt="Image description" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;যদি টার্গেট ভ্যালূ অ্যারের মধ্যে একাধিকবার থাকে তাহলে যতগুলো ইন্ডেস্কে টার্গেট ভ্যালূ পাওয়া যাবে সবগুলো ইন্ডেস্ক বের করতে হবে। একে গ্লোবাল লিনিয়ার সার্চ বলা হয়। সেক্ষেত্রে আমাদের একটি এম্পটি অ্যারে নিতে হবে,&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;let  newArray = [];&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;প্রতিবার ইন্ডেস্ক চেক করার সময় যদি টার্গেট ভ্যালূ পাওয়া যায় তাহলে সেই ইন্ডেস্ক (i) কে নতুন অ্যারের ভিতর পুশ করতে হবে এবং newArray কে রিটার্ন করতে হবে।&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%2F7oz39uu69fxh87fjjkfi.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%2F7oz39uu69fxh87fjjkfi.png" alt="Image description" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>javascript</category>
      <category>linearsearch</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
