<?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: Arifur Rahman</title>
    <description>The latest articles on DEV Community by Arifur Rahman (@r_if99).</description>
    <link>https://dev.to/r_if99</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%2F1071960%2F0365dab6-8722-4d47-92ed-8591ad96d664.jpg</url>
      <title>DEV Community: Arifur Rahman</title>
      <link>https://dev.to/r_if99</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/r_if99"/>
    <language>en</language>
    <item>
      <title>Laravel সম্পর্কের চিটশিট</title>
      <dc:creator>Arifur Rahman</dc:creator>
      <pubDate>Fri, 04 Oct 2024 21:32:45 +0000</pubDate>
      <link>https://dev.to/r_if99/laravel-smprker-cittshitt-1lgm</link>
      <guid>https://dev.to/r_if99/laravel-smprker-cittshitt-1lgm</guid>
      <description>&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;বর্ণনা&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;strong&gt;hasOne&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;এক প্যারেন্টের একটি চাইল্ড থাকে।&lt;/td&gt;
&lt;td&gt;User এর একটি Profile আছে&lt;/td&gt;
&lt;td&gt;&lt;code&gt;public function profile() { return $this-&amp;gt;hasOne(Profile::class); }&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;belongsTo&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;একটি চাইল্ড একটি প্যারেন্টের অন্তর্ভুক্ত।&lt;/td&gt;
&lt;td&gt;Profile একটি User এর অন্তর্ভুক্ত&lt;/td&gt;
&lt;td&gt;&lt;code&gt;public function user() { return $this-&amp;gt;belongsTo(User::class); }&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;hasMany&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;এক প্যারেন্টের অনেক চাইল্ড থাকে।&lt;/td&gt;
&lt;td&gt;Class এর অনেক Student আছে&lt;/td&gt;
&lt;td&gt;&lt;code&gt;public function students() { return $this-&amp;gt;hasMany(Student::class); }&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;belongsToMany&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;দুটি মডেলের মধ্যে বহু-টু-গণনা সম্পর্ক।&lt;/td&gt;
&lt;td&gt;Teacher অনেক Subject পড়ান&lt;/td&gt;
&lt;td&gt;&lt;code&gt;public function subjects() { return $this-&amp;gt;belongsToMany(Subject::class); }&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;hasManyThrough&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;অন্য একটি মডেলের মাধ্যমে একটি মডেলকে অ্যাক্সেস করা।&lt;/td&gt;
&lt;td&gt;Country এর অনেক Post আছে User এর মাধ্যমে&lt;/td&gt;
&lt;td&gt;&lt;code&gt;public function posts() { return $this-&amp;gt;hasManyThrough(Post::class, User::class); }&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;morphOne&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;এক-টু-এক পলিমরফিক সম্পর্ক।&lt;/td&gt;
&lt;td&gt;User এর একটি Image থাকতে পারে&lt;/td&gt;
&lt;td&gt;&lt;code&gt;public function image() { return $this-&amp;gt;morphOne(Image::class, 'imageable'); }&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;morphMany&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;এক-টু-অনেক পলিমরফিক সম্পর্ক।&lt;/td&gt;
&lt;td&gt;User এর অনেক Images থাকতে পারে&lt;/td&gt;
&lt;td&gt;&lt;code&gt;public function images() { return $this-&amp;gt;morphMany(Image::class, 'imageable'); }&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;morphedByMany&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;বহু-টু-গণনা পলিমরফিক সম্পর্ক।&lt;/td&gt;
&lt;td&gt;Tag অনেক Post এর সাথে যুক্ত&lt;/td&gt;
&lt;td&gt;&lt;code&gt;public function posts() { return $this-&amp;gt;morphedByMany(Post::class, 'taggable'); }&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  মনে রাখার টিপস
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;প্যারেন্ট-চাইল্ড ধারণা&lt;/strong&gt;: সবসময় সম্পর্কের দিক চিন্তা করুন। &lt;strong&gt;hasOne&lt;/strong&gt; এবং &lt;strong&gt;hasMany&lt;/strong&gt; সম্পর্কের ক্ষেত্রে প্যারেন্ট "মালিকানা" রাখে, যখন &lt;strong&gt;belongsTo&lt;/strong&gt; সম্পর্কের ক্ষেত্রে চাইল্ড "সম্পর্কিত" হয়।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;পলিমরফিক সম্পর্ক&lt;/strong&gt;: মনে রাখবেন, পলিমরফিক সম্পর্ক যেমন &lt;strong&gt;morphOne&lt;/strong&gt; এবং &lt;strong&gt;morphMany&lt;/strong&gt; একটি মডেলকে একাধিক ধরনের মডেলের সাথে সংযুক্ত করতে সক্ষম করে একটি একক সংযোগের মাধ্যমে।&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;বহু-টু-গণনা&lt;/strong&gt;: &lt;strong&gt;belongsToMany&lt;/strong&gt; সম্পর্কের ক্ষেত্রে, পিভট টেবিলগুলি দুটি মডেলকে সংযোগ করতে সাহায্য করে, যেখানে উভয় মডেলেই একাধিক ইনস্ট্যান্স থাকতে পারে।&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;এই চিটশিটটি Laravel সম্পর্কের ধরনগুলির সংক্ষিপ্ত সারসংক্ষেপ। এটি আপনার অ্যাপ্লিকেশন তৈরি করার সময় একটি দ্রুত রেফারেন্স হিসাবে ব্যবহার করুন! যদি আপনার আরও প্রশ্ন থাকে বা আরও ব্যাখ্যার প্রয়োজন হয়, তাহলে নিশ্চয়ই জিজ্ঞাসা করুন!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Ajax</title>
      <dc:creator>Arifur Rahman</dc:creator>
      <pubDate>Thu, 03 Oct 2024 07:19:43 +0000</pubDate>
      <link>https://dev.to/r_if99/ajax-4fbp</link>
      <guid>https://dev.to/r_if99/ajax-4fbp</guid>
      <description>&lt;p&gt;তোমার দেওয়া কোডটি আমি ধাপে ধাপে ব্যাখ্যা করছি, যাতে তুমি সহজেই বুঝতে পারো এবং কখনো ভুলে না যাও। এটি হলো একটি AJAX রিকোয়েস্ট যা XMLHttpRequest ব্যবহার করে API থেকে ডেটা আনে। নিচে প্রতিটি লাইন কীভাবে কাজ করছে তা বাংলায় বুঝিয়ে দিচ্ছি।&lt;/p&gt;

&lt;p&gt;&lt;strong&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;function fetchData() {
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে একটি ফাংশন তৈরি করা হয়েছে, যার নাম fetchData()। তুমি যখন এই ফাংশনটি কল করবে, তখন এটি সার্ভার থেকে ডেটা আনার জন্য AJAX রিকোয়েস্ট পাঠাবে।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;২. XMLHttpRequest অবজেক্ট তৈরি:&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 xhr = new XMLHttpRequest();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;XMLHttpRequest হলো একটি বিল্ট-ইন জাভাস্ক্রিপ্ট অবজেক্ট, যা AJAX রিকোয়েস্ট পাঠাতে ব্যবহার করা হয়। xhr নামে একটি ভ্যারিয়েবল তৈরি করা হয়েছে, যেটি এই অবজেক্টটি ধারণ করছে।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;৩. সার্ভারে GET রিকোয়েস্ট প্রস্তুত:&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;xhr.open('GET', 'https://api.example.com/data', true);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে xhr.open() মেথডটি ব্যবহার করে সার্ভারে একটি GET রিকোয়েস্ট তৈরি করা হয়েছে। এই রিকোয়েস্টে তিনটি বিষয় আছে:&lt;/p&gt;

&lt;p&gt;'GET': এটি HTTP মেথড, যা নির্দেশ করে যে আমরা সার্ভার থেকে ডেটা আনতে চাই (তথ্য পাঠানোর জন্য POST মেথড ব্যবহৃত হয়)।&lt;/p&gt;

&lt;p&gt;'&lt;a href="https://api.example.com/data':" rel="noopener noreferrer"&gt;https://api.example.com/data':&lt;/a&gt; এটি হলো API এর ঠিকানা (endpoint)। তুমি এই ঠিকানায় রিকোয়েস্ট পাঠাচ্ছো, যেখানে থেকে সার্ভার ডেটা ফেরত পাঠাবে।&lt;/p&gt;

&lt;p&gt;true: এটি নির্দেশ করে যে রিকোয়েস্টটি asynchronous হবে, অর্থাৎ পুরো পেজটি অপেক্ষা করবে না; ডেটা যখন পাওয়া যাবে তখন পেজের অন্য অংশের কাজ চলতে থাকবে।&lt;/p&gt;

&lt;p&gt;&lt;strong&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;xhr.onload = function() {
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এটি হলো অনলোড ইভেন্ট, যা তখন ট্রিগার হবে যখন সার্ভার থেকে ডেটা আসবে। অর্থাৎ, যখন রিকোয়েস্ট সফলভাবে সম্পন্ন হবে এবং সার্ভার থেকে ডেটা আসবে, তখন এই ফাংশনটি চলবে।&lt;/p&gt;

&lt;p&gt;&lt;strong&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;if (xhr.status === 200) {
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এখানে xhr.status চেক করা হচ্ছে। 200 মানে হলো সার্ভার থেকে রিকোয়েস্ট সফলভাবে সম্পন্ন হয়েছে। যদি স্ট্যাটাস 200 হয়, তাহলে আমরা ডেটা প্রসেস করবো। অন্য যেকোনো স্ট্যাটাস মানে হতে পারে যে কোনো সমস্যা হয়েছে (যেমন 404 – পেজ না পাওয়া)।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;৬. JSON ডেটা পার্স করা:&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 data = JSON.parse(xhr.responseText);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;xhr.responseText হলো সার্ভার থেকে আসা রেসপন্স, যা সাধারণত JSON ফরম্যাটে থাকে। JSON.parse() মেথডটি ব্যবহার করে JSON ডেটাকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করা হচ্ছে, যাতে আমরা সেটি সহজে ব্যবহার করতে পারি।&lt;/p&gt;

&lt;p&gt;উদাহরণ:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "name": "John",
    "age": 30
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এটি JSON ফরম্যাট, যা সার্ভার থেকে আসতে পারে, এবং আমরা সেটিকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করবো।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;৭. ডেটা কনসোলে দেখানো:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;console.log(data);&lt;/code&gt;&lt;br&gt;
console.log(data) ব্যবহার করে আমরা সেই ডেটাকে কনসোলে দেখাচ্ছি, যাতে ডেভেলপাররা সহজে ডেটা দেখতে এবং ডিবাগ করতে পারেন। তুমি ব্রাউজারের কনসোলে ডেটাটি দেখতে পাবে।&lt;/p&gt;

&lt;p&gt;&lt;strong&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;xhr.send();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;xhr.send() মেথডটি ব্যবহার করে রিকোয়েস্ট সার্ভারে পাঠানো হয়। যখন রিকোয়েস্ট পাঠানো হবে, তখন সার্ভার সেটি গ্রহণ করবে এবং ডেটা পাঠিয়ে দেবে।&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;সম্পূর্ণ ব্যাখ্যা:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;১. ফাংশনটি তৈরি করা হলো যা AJAX রিকোয়েস্ট পাঠাবে। &lt;/li&gt;
&lt;li&gt;২. XMLHttpRequest অবজেক্ট তৈরি করা হলো AJAX রিকোয়েস্টের জন্য। &lt;/li&gt;
&lt;li&gt;৩. সার্ভারে GET রিকোয়েস্ট প্রস্তুত করা হলো API থেকে ডেটা আনার জন্য। &lt;/li&gt;
&lt;li&gt;৪. রিকোয়েস্ট সফলভাবে ডেটা নিয়ে এলে অনলোড ইভেন্ট কাজ করবে। &lt;/li&gt;
&lt;li&gt;৫. যদি স্ট্যাটাস 200 হয়, তাহলে ডেটা প্রসেস করা হবে। &lt;/li&gt;
&lt;li&gt;৬. JSON ডেটাকে জাভাস্ক্রিপ্ট অবজেক্টে পার্থক্য (parse) করা হবে। &lt;/li&gt;
&lt;li&gt;৭. কনসোলে ডেটা দেখা যাবে। &lt;/li&gt;
&lt;li&gt;৮. রিকোয়েস্ট পাঠানো হবে সার্ভারে।&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;সংক্ষেপে মনে রাখার টিপস:&lt;/strong&gt;&lt;br&gt;
AJAX দিয়ে API থেকে ডেটা নিতে XMLHttpRequest ব্যবহার করা হয়।&lt;br&gt;
API URL এ রিকোয়েস্ট পাঠিয়ে ডেটা পাওয়া হয়।&lt;br&gt;
ডেটা সাধারণত JSON ফরম্যাটে আসে এবং আমরা সেটি JSON.parse() করে ব্যবহার করি।&lt;br&gt;
এইভাবে প্রতিটি ধাপ অনুসরণ করলে তুমি কখনো এই প্রক্রিয়াটি ভুলবে না!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>npm(node package manager) in Bangla</title>
      <dc:creator>Arifur Rahman</dc:creator>
      <pubDate>Thu, 04 May 2023 10:53:57 +0000</pubDate>
      <link>https://dev.to/r_if99/npmnode-package-manager-in-bangla-47lc</link>
      <guid>https://dev.to/r_if99/npmnode-package-manager-in-bangla-47lc</guid>
      <description>&lt;p&gt;sass file brower read korte pare na.so sass file k complile kore lage into css.in real world sass file k css comvert korte amader lage build tool.si jonno amra use kori gulp.amader install kora lage npm to run gulp &lt;/p&gt;

&lt;p&gt;npm holo javascript er huge part of eco system&lt;/p&gt;

&lt;p&gt;npm holo node package manager.npm a ace huge reposotory and mostly open sourse .anyone can those packge for freee.&lt;/p&gt;

&lt;h1&gt;
  
  
  but why we do need npm?
&lt;/h1&gt;

&lt;p&gt;example :let say we need to build a car.car build korar jonno sobgo part jodi amra nijera create kore that will be expensive and hard.amra jodi car er part golo alada alada kore ani it will be easy for us.&lt;/p&gt;

&lt;p&gt;same way npm prebuild code for us that other people already written.amara amader project code golo use korte pari.&lt;/p&gt;

&lt;p&gt;author write the code and for their package and publish it on the npm registery .&lt;/p&gt;

&lt;p&gt;tarpor tumi jodi ai package ta use korte chaw tomi install korte paro tomar computer a with npm cli or command line inteface .&lt;/p&gt;

&lt;p&gt;akane alll kind of package ace small purpose kinba big project er jonnno pacakge pabe.&lt;/p&gt;

&lt;p&gt;jokon nodejs install korbe tokon node.js abong npm run hobe same time a .&lt;br&gt;
terminal a giye tomi node er version check korte parbe r npm er version check korte parbe&lt;/p&gt;

&lt;p&gt;tumi ai package golo tomar project a use korte parbe.&lt;/p&gt;

&lt;p&gt;tumi npm use korte hole tomake node.js install korte hobe tomar computer a .&lt;/p&gt;

&lt;p&gt;node.js holo javascript runtime environment .&lt;/p&gt;

&lt;p&gt;node.js install korar jonno nodejs website a install korte parben&lt;/p&gt;

&lt;p&gt;jokon nodejs install korbe tokon node.js abong npm run hobe same time a .&lt;/p&gt;

&lt;p&gt;terminal a giye tomi node er version check korte parbe r npm er version check korte parbe&lt;/p&gt;

&lt;p&gt;tahole kon pacake golo tumi use korbe jekane over and thousand package ache ekane.kibabe janbe kon package ta tomar proyojon.actually it depen tumi ki doroner project create korcho.&lt;br&gt;
for example :tumi jodi new vue.js project create korte chaw tahole you need tool like webpack or snowpack&lt;/p&gt;

&lt;p&gt;example: amra amade sass file k css a compile korte use korbo gulp .so we need to install a bunch of gulp and sass related packages&lt;/p&gt;
&lt;h1&gt;
  
  
  kibabe npm package install korbe?
&lt;/h1&gt;

&lt;p&gt;npm package install kora jai &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;locally &lt;/li&gt;
&lt;li&gt;globally&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;installing locally mean that it will only be accessible from that specific project folder.if you have other project each will have it own set of local project..&lt;/p&gt;

&lt;p&gt;to install localpackage youll use the npm cli in your terminal in npm install and name of the package you want for.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;for example: to install chalk package .type npm install chalk in your terminal *&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;enake most package installed globally on your computer.etar mane holo the package functions will be accessible from any directory.&lt;br&gt;
usually you will only globally install packages that are meant to be run on your command line in any directory the gulp cli is one example of this as it will run gulp when you type gulp into your command line from any location to install a pacage globally type in .&lt;br&gt;
npm install gulp&lt;/p&gt;
&lt;h1&gt;
  
  
  akon amra dekbo basic of installation :
&lt;/h1&gt;

&lt;p&gt;jodi tumi multiple packages use kore thako tomar project a .tahole akta upaye tumi track korte parbe kon package ta tumi install korecho .ta holo package.json file.package.json file er maddome tumi track korte parbe tomar package k.&lt;br&gt;
package.json file also store infomation about your project like name,version,author,and github repository .&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;package.json * file super useful especially if other people want to clone your project and need all the specific package that you used they can use the package json file to install all of them all at once
if they run
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;in a folder that the package json file to install all of them all at once if they run npm install in a folder that&lt;/p&gt;

&lt;p&gt;package.json file super useful onno developerder jonno .&lt;br&gt;
jodi developer clone korte chi tomar project&lt;br&gt;
abon jesob package tumi use korecho ta proyojon hoi&lt;br&gt;
ta tara use korte parbe jodi tara package json file install kore abong npm run kore&lt;br&gt;
Jodi tara npm install run kore&lt;/p&gt;

&lt;p&gt;in a folder jetate package json file ace.npm will read package json file and automatically install all the package listed &lt;/p&gt;

&lt;p&gt;this come to deployment too as the server can install the packages right when you deploy&lt;/p&gt;
&lt;h2&gt;
  
  
  jokon tumo kono project developing korbe tokon prothomei tomi pakage.json file create korbe
&lt;/h2&gt;

&lt;p&gt;tumi pakage.json file file npm er maddome create korte parbe by running npm init on your command line in your project&lt;/p&gt;

&lt;p&gt;npm ask you some question like name and description and then create the json file&lt;/p&gt;

&lt;p&gt;Tomi jodi manually answer dite na chaw tahole&lt;br&gt;
tahole tomi likbe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm init &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;eta immediately pacakge.json file create korbe and set kore dibe all the fieldd to a default value and tumi chile always chage the information in the future&lt;/p&gt;

&lt;h1&gt;
  
  
  Deal with dependency:
&lt;/h1&gt;

&lt;p&gt;jokon tumi pakage.json file create korbe .er por theke tumi pakage install start korte parbe&lt;/p&gt;

&lt;h2&gt;
  
  
  what does installing a package actually do on your computer?
&lt;/h2&gt;

&lt;p&gt;let say you have a brand new project abong tumar chalk package ta proyojon than type&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;sate sate npm installing soro korbe chalk package k&lt;/p&gt;

&lt;p&gt;jokon installtion kora ses hoye jabe tokon dekbe package.json file a chalk listed hobe as a dependency&lt;/p&gt;

&lt;p&gt;etar mane holo tumi akon chalk package er function tomar code a use korte parbe&lt;/p&gt;

&lt;p&gt;amra notice korbo node_modules has been created .ai node_modules a npm store all the file package file.er mane holo node_modules file a sob package file ace.&lt;/p&gt;

&lt;h2&gt;
  
  
  ai folder a er ekta file dekbe chalk file jeta make sense.but other file golo ki?
&lt;/h2&gt;

&lt;p&gt;keno npm install chalk file er sate sate all the other file install korlo .this is because of dependecy nature of npm&lt;/p&gt;

&lt;p&gt;tumi npm package install korcho in your project.to use other peoples code.tahole akon tomar project depent korche oi package er upor.abar oi package ta o use korteche onno kono package.amader node_modules folder a those folder are for package&lt;/p&gt;

&lt;p&gt;chalk er package.json file a tumi dekte parbe dependency file .chalk ekane 2 ta dependency file/package niche &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ansi-style &lt;/li&gt;
&lt;li&gt;supports-color&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;than tumi jodi ansi-style file a jaw tomi dekba pakage.json file .package.json file a tomi also dekba depencny file color-conver&lt;/p&gt;

&lt;p&gt;akon jodi color convert a jaw tokon dekba another package.json file.&lt;/p&gt;

&lt;p&gt;supports color package a dependency pakage holo has-flag file&lt;br&gt;
so package.json file also store infomation about your project like name,version,author,and github repository .&lt;/p&gt;

&lt;p&gt;npm list dile tumi quickly package golo ki ki ache ta dekte parbe&lt;/p&gt;

&lt;h1&gt;
  
  
  pakage versioning
&lt;/h1&gt;

&lt;h2&gt;
  
  
  how does versioning and updating work in npm?
&lt;/h2&gt;

&lt;p&gt;jodi amra amader terminal a type kori&lt;br&gt;
npm view chalk versions&lt;br&gt;
it will return a list of all the versions of chalk from the begining&lt;/p&gt;

</description>
    </item>
    <item>
      <title>tailwind css Basic in Bangla</title>
      <dc:creator>Arifur Rahman</dc:creator>
      <pubDate>Thu, 04 May 2023 08:53:27 +0000</pubDate>
      <link>https://dev.to/r_if99/tailwind-css-basic-in-bangla-4g8d</link>
      <guid>https://dev.to/r_if99/tailwind-css-basic-in-bangla-4g8d</guid>
      <description>&lt;h1&gt;
  
  
  Documentation
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;CDN is not good choice *&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Using postcss
&lt;/h2&gt;

&lt;p&gt;-&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;ul&gt;
&lt;li&gt;create css/tailwind.css file&lt;/li&gt;
&lt;/ul&gt;

&lt;ul&gt;
&lt;li&gt;in tailwind file add&lt;/li&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/tailwind"&gt;@tailwind&lt;/a&gt; base&lt;/li&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/tailwind"&gt;@tailwind&lt;/a&gt; components&lt;/li&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/tailwind"&gt;@tailwind&lt;/a&gt; utilities&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;যদি তুমি laravel , next.js অথবা vue ইউজ করে থাকেন তবে সবাই postcss ইউজ করে 🚀&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;install tailwindcss ,postcss, autoprefixer এবং vite via npm . everyting will be dev dependency&lt;br&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;     npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-D&lt;/span&gt; tailwindcss postcss autoprefixer vite
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;in package.json file change write "scripts" : {"dev" : "vite"}
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    &lt;span class="s2"&gt;"scripts"&lt;/span&gt;: &lt;span class="o"&gt;{&lt;/span&gt;
  &lt;span class="s2"&gt;"dev"&lt;/span&gt;: &lt;span class="s2"&gt;"vite"&lt;/span&gt;
     &lt;span class="o"&gt;}&lt;/span&gt;,
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;generate postcss config and tailwind conf
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  npx tailwindcss init &lt;span class="nt"&gt;-p&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  mobile designe
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_AiTzidT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228300566-e5ebfbc1-e2c8-4eb3-9ac4-459a7e66f02a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_AiTzidT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228300566-e5ebfbc1-e2c8-4eb3-9ac4-459a7e66f02a.png" alt="Screenshot 2023-03-28 220417" width="498" height="772"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  tips :
&lt;/h3&gt;

&lt;p&gt;. যদি parent এর মদ্যের childrenগলো কে space দিতে হয় তবে spacey-4 দিতে হবে&lt;br&gt;
. BUTTON e inline-block দিলে padding এর spaceing golo টিক তকবে&lt;/p&gt;
&lt;h2&gt;
  
  
  make it responsive
&lt;/h2&gt;

&lt;p&gt;এখন যদি screen সাইজ বড় করেন তবে ডেকতে পাবেন ইমেজ অনেক বড় হয়ে গেছে । its weird&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wHvlxsIt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228596274-3a086d3b-8c0b-4b85-a6e8-06d5c495a50b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wHvlxsIt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228596274-3a086d3b-8c0b-4b85-a6e8-06d5c495a50b.png" alt="Screenshot 2023-03-29 215148" width="800" height="702"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;max-w-md mane div er width max-width bole dilam 448px&lt;br&gt;
div টা কে center করতে mx-auto করে দিলাম&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s8J89hTy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228627834-90fdea6b-78e6-4577-8e60-5ee93bc35751.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s8J89hTy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228627834-90fdea6b-78e6-4577-8e60-5ee93bc35751.png" alt="Screenshot 2023-03-30 000144" width="656" height="575"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;but এখানে problem হল div টার max-width:448px হওয়ায় লার্জ ডিসপ্লে তে অনেক স্পেস খালি দেখাছে&lt;/p&gt;

&lt;p&gt;তাহলে any display তে div টা কিভাবে ভাল দেখাবে&lt;br&gt;
breakpoint&lt;/p&gt;

&lt;p&gt;tailwind css এর ৫ টা breakpoint আছে&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sm  640px   @media (min-width: 640px) { ... }
md  768px   @media (min-width: 768px) { ... }
lg  1024px  @media (min-width: 1024px) { ... }
xl  1280px  @media (min-width: 1280px) { ... }
2xl 1536px  @media (min-width: 1536px) { ... }

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

&lt;/div&gt;



&lt;p&gt;div er width 640 er upore max-widht hobe max-w-xl&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0AWZch0f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228632767-b80286e4-a88b-4255-b667-441b9acd879b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0AWZch0f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228632767-b80286e4-a88b-4255-b667-441b9acd879b.png" alt="Screenshot 2023-03-29 215148" width="800" height="702"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;default setting er por প্রথমে sm device er jonne set korbo&lt;br&gt;
then md er breakpoint set korbo&lt;br&gt;
then lg er breakpoint er jonno set korbo&lt;br&gt;
after that xl er&lt;br&gt;
finally 2xl&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;h1&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;default: h1 er font size hobe text-2xl(24px ) এবং sm:text-4xl(36 px) এবং&lt;/li&gt;
&lt;li&gt;font-weight hobe font-bold&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;p&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;defalut : p font আছে তাই আর sm:text-xl(20px) হবে&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
  
  
  lg breakpont(sm 640px @media (min-width: 640px) { ... })
&lt;/h1&gt;

&lt;p&gt;lg breakpoint onek khali space dekacce&lt;br&gt;
ami cacci image ek pase takbe ar content ek pashe takbe&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rX9MmUe7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228864916-0e901490-a04e-46d5-9ad5-7e6d888632f4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rX9MmUe7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228864916-0e901490-a04e-46d5-9ad5-7e6d888632f4.png" alt="Screenshot 2023-03-30 195409" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qFGMnsw0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228862907-139b10ad-1208-496e-8966-d642abce4082.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qFGMnsw0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228862907-139b10ad-1208-496e-8966-d642abce4082.png" alt="Screenshot 2023-03-30 195409" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;img কে lg:hidden করে দিলাম ।&lt;br&gt;
আলাদা div এ image নিলাম hidden করে দিলাম আর lg:block করে দিলাম&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"px-8 py-12 max-w-md mx-auto sm:max-w-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;img &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"h-10"&lt;/span&gt; &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/twitch.png"&lt;/span&gt; &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt; /&amp;gt;
      &amp;lt;img
        &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 rounded-lg shadow-xl sm:mt-8 sm:h-64 sm:w-full object-cover object-center lg:hidden"&lt;/span&gt;
        &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/workonremote.webp"&lt;/span&gt;
        &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
      /&amp;gt;
      &amp;lt;h1 &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 text-2xl font-bold text-gray-900 sm:mt-8 sm:text-4xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        You can work on anywhere &lt;span class="nb"&gt;.&lt;/span&gt;
        &amp;lt;span &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"text-red-500"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Take advantage of it&amp;lt;/span&amp;gt;
      &amp;lt;/h1&amp;gt;
      &amp;lt;p &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-2 text-gray-600 sm:mt-4 sm:text-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        Twitch will helps you find work-friendly rentals &lt;span class="k"&gt;in &lt;/span&gt;beautiful so you can
        enjoy some niece weather even when your&lt;span class="s1"&gt;'re not on vacation
      &amp;lt;/p&amp;gt;
      &amp;lt;div class="mt-4 sm:mt-6"&amp;gt;
        &amp;lt;a
          class="inline-block bg-red-500 text-white px-5 py-3 rounded-lg font-semibold font-medium shadow-lg shadow-red-400 uppercase tracking-widest sm:text-base"
          href=""
          &amp;gt;Book your space&amp;lt;/a
        &amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

    &amp;lt;div&amp;gt;
      &amp;lt;img class="hidden lg:block" src="img/workonremote.webp" alt="" /&amp;gt;
    &amp;lt;/div&amp;gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;flex er maddome amra split korte pari কিংবা grid er maddome amra split korte pari । আমরা এখানে grid এর মদ্যমে split করব&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;এই container টা কে আমরা div এর মদ্যের wrap করব&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"grid grid-cols-2"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"px-8 py-12 max-w-md mx-auto sm:max-w-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;img &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"h-10"&lt;/span&gt; &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/twitch.png"&lt;/span&gt; &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt; /&amp;gt;
        &amp;lt;img
          &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 rounded-lg shadow-xl sm:mt-8 sm:h-64 sm:w-full object-cover object-center lg:hidden"&lt;/span&gt;
          &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/workonremote.webp"&lt;/span&gt;
          &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
        /&amp;gt;
        &amp;lt;h1 &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 text-2xl font-bold text-gray-900 sm:mt-8 sm:text-4xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          You can work on anywhere &lt;span class="nb"&gt;.&lt;/span&gt;
          &amp;lt;span &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"text-red-500"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Take advantage of it&amp;lt;/span&amp;gt;
        &amp;lt;/h1&amp;gt;
        &amp;lt;p &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-2 text-gray-600 sm:mt-4 sm:text-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          Twitch will helps you find work-friendly rentals &lt;span class="k"&gt;in &lt;/span&gt;beautiful so you
          can enjoy some niece weather even when your&lt;span class="s1"&gt;'re not on vacation
        &amp;lt;/p&amp;gt;
        &amp;lt;div class="mt-4 sm:mt-6"&amp;gt;
          &amp;lt;a
            class="inline-block bg-red-500 text-white px-5 py-3 rounded-lg font-semibold font-medium shadow-lg shadow-red-400 uppercase tracking-widest sm:text-base"
            href=""
            &amp;gt;Book your space&amp;lt;/a
          &amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;

      &amp;lt;div&amp;gt;
        &amp;lt;img class="hidden lg:block" src="img/workonremote.webp" alt="" /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LlthzP_u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228869500-f269b610-b2d0-4184-9740-3c9bc408adfa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LlthzP_u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228869500-f269b610-b2d0-4184-9740-3c9bc408adfa.png" alt="Screenshot 2023-03-30 203000" width="800" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;h1&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;default: h1 er font size hobe&lt;/li&gt;
&lt;li&gt;text-2xl(24px ) এবং&lt;/li&gt;
&lt;li&gt;sm:text-4xl(36 px) এবং&lt;/li&gt;
&lt;li&gt;lg:text-3xl(30px)&lt;/li&gt;
&lt;li&gt;font-weight hobe font-bold&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;p&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;defalut : p font আছে তাই আর sm:text-xl(20px) হবে
&lt;/li&gt;
&lt;/ul&gt;


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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"grid grid-cols-2"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"px-8 py-12 max-w-md mx-auto sm:max-w-xl lg:px-12 py-48"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;img &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"h-10"&lt;/span&gt; &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/twitch.png"&lt;/span&gt; &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt; /&amp;gt;
        &amp;lt;img
          &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 rounded-lg shadow-xl sm:mt-8 sm:h-64 sm:w-full object-cover object-center lg:hidden"&lt;/span&gt;
          &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/workonremote.webp"&lt;/span&gt;
          &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
        /&amp;gt;
        &amp;lt;h1
          &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 text-2xl font-bold text-gray-900 sm:mt-8 sm:text-4xl lg:text-3xl"&lt;/span&gt;
        &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          You can work on anywhere &lt;span class="nb"&gt;.&lt;/span&gt;
          &amp;lt;span &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"text-red-500"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Take advantage of it&amp;lt;/span&amp;gt;
        &amp;lt;/h1&amp;gt;
        &amp;lt;p &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-2 text-gray-600 sm:mt-4 sm:text-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          Twitch will helps you find work-friendly rentals &lt;span class="k"&gt;in &lt;/span&gt;beautiful so you
          can enjoy some niece weather even when your&lt;span class="s1"&gt;'re not on vacation
        &amp;lt;/p&amp;gt;
        &amp;lt;div class="mt-4 sm:mt-6"&amp;gt;
          &amp;lt;a
            class="inline-block bg-red-500 text-white px-5 py-3 rounded-lg font-semibold font-medium shadow-lg shadow-red-400 uppercase tracking-widest sm:text-base"
            href=""
            &amp;gt;Book your space&amp;lt;/a
          &amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;

      &amp;lt;div&amp;gt;
        &amp;lt;img class="hidden lg:block" src="img/workonremote.webp" alt="" /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--POqp_-6C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228874358-225a5a28-9cc3-4cb9-9a18-47563cf7fb77.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--POqp_-6C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228874358-225a5a28-9cc3-4cb9-9a18-47563cf7fb77.png" alt="Screenshot 2023-03-30 204312" width="799" height="629"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  কিভাবে image full and space nibe with relative and absulate
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;body &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"bg-slate-200"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"bg-gray-300 grid grid-cols-2"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"px-8 py-12 max-w-md mx-auto sm:max-w-xl lg:px-12 py-48"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;img &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"h-10"&lt;/span&gt; &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/twitch.png"&lt;/span&gt; &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt; /&amp;gt;
        &amp;lt;img
          &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 rounded-lg shadow-xl sm:mt-8 sm:h-64 sm:w-full object-cover object-center lg:hidden"&lt;/span&gt;
          &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/workonremote.webp"&lt;/span&gt;
          &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
        /&amp;gt;
        &amp;lt;h1
          &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 text-2xl font-bold text-gray-900 sm:mt-8 sm:text-4xl lg:text-3xl"&lt;/span&gt;
        &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          You can work on anywhere &lt;span class="nb"&gt;.&lt;/span&gt;
          &amp;lt;span &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"text-red-500"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Take advantage of it&amp;lt;/span&amp;gt;
        &amp;lt;/h1&amp;gt;
        &amp;lt;p &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-2 text-gray-600 sm:mt-4 sm:text-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          Twitch will helps you find work-friendly rentals &lt;span class="k"&gt;in &lt;/span&gt;beautiful so you
          can enjoy some niece weather even when your&lt;span class="s1"&gt;'re not on vacation
        &amp;lt;/p&amp;gt;
        &amp;lt;div class="mt-4 sm:mt-6"&amp;gt;
          &amp;lt;a
            class="inline-block bg-red-500 text-white px-5 py-3 rounded-lg font-semibold font-medium shadow-lg shadow-red-400 uppercase tracking-widest sm:text-base"
            href=""
            &amp;gt;Book your space&amp;lt;/a
          &amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;

      &amp;lt;div class="hidden relative lg:block"&amp;gt;
        &amp;lt;img
          class="absolute inset-0 w-full h-full object-cover object-center"
          src="img/workonremote.webp"
          alt=""
        /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  problem: larger breakpoint e tik ace but smaller breakpoint e designe ভেঙে গেছে
&lt;/h3&gt;

&lt;p&gt;নিচের দিকে breakpoint এ সব gird-cols-2 ডেকাচ্ছে&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2Plu1pnM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228878044-e800d3f3-849a-46dc-a269-71d568f6970f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2Plu1pnM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228878044-e800d3f3-849a-46dc-a269-71d568f6970f.png" alt="Screenshot 2023-03-30 205550" width="678" height="840"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so grid container e lg:grid-cols-2 dile ei sommar solution hobe . specify kore dite hobe grid-cols-2 ta lg er jonne&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&amp;lt;body &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"bg-slate-200"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"bg-gray-300 grid lg:grid-cols-2"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"px-8 py-12 max-w-md mx-auto sm:max-w-xl lg:px-12 lg:py-48"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;img &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"h-10"&lt;/span&gt; &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/twitch.png"&lt;/span&gt; &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt; /&amp;gt;
        &amp;lt;img
          &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 rounded-lg shadow-xl sm:mt-8 sm:h-64 sm:w-full object-cover object-center lg:hidden"&lt;/span&gt;
          &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/workonremote.webp"&lt;/span&gt;
          &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
        /&amp;gt;
        &amp;lt;h1
          &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 text-2xl font-bold text-gray-900 sm:mt-8 sm:text-4xl lg:text-3xl"&lt;/span&gt;
        &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          You can work on anywhere &lt;span class="nb"&gt;.&lt;/span&gt;
          &amp;lt;span &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"text-red-500"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Take advantage of it&amp;lt;/span&amp;gt;
        &amp;lt;/h1&amp;gt;
        &amp;lt;p &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-2 text-gray-600 sm:mt-4 sm:text-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          Twitch will helps you find work-friendly rentals &lt;span class="k"&gt;in &lt;/span&gt;beautiful so you
          can enjoy some niece weather even when your&lt;span class="s1"&gt;'re not on vacation
        &amp;lt;/p&amp;gt;
        &amp;lt;div class="mt-4 sm:mt-6"&amp;gt;
          &amp;lt;a
            class="inline-block bg-red-500 text-white px-5 py-3 rounded-lg font-semibold font-medium shadow-lg shadow-red-400 uppercase tracking-widest sm:text-base"
            href=""
            &amp;gt;Book your space&amp;lt;/a
          &amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;

      &amp;lt;div class="hidden relative lg:block"&amp;gt;
        &amp;lt;img
          class="absolute inset-0 w-full h-full object-cover object-center"
          src="img/workonremote.webp"
          alt=""
        /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
  &amp;lt;/body&amp;gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  sm:max-w-md to lg:max-w-full
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6fiUoOGv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228882687-3ef0fdd6-b76b-478b-918f-3e741b1e1adb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6fiUoOGv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/228882687-3ef0fdd6-b76b-478b-918f-3e741b1e1adb.png" alt="Screenshot 2023-03-30 211120" width="712" height="534"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"bg-gray-300 grid lg:grid-cols-2"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div
        &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"px-8 py-12 max-w-md mx-auto sm:max-w-xl lg:px-12 lg:py-48 lg:max-w-full"&lt;/span&gt;
      &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;img &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"h-10"&lt;/span&gt; &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/twitch.png"&lt;/span&gt; &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt; /&amp;gt;
        &amp;lt;img
          &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 rounded-lg shadow-xl sm:mt-8 sm:h-64 sm:w-full object-cover object-center lg:hidden"&lt;/span&gt;
          &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/workonremote.webp"&lt;/span&gt;
          &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
        /&amp;gt;
        &amp;lt;h1
          &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 text-2xl font-bold text-gray-900 sm:mt-8 sm:text-4xl lg:text-3xl"&lt;/span&gt;
        &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          You can work on anywhere &lt;span class="nb"&gt;.&lt;/span&gt;
          &amp;lt;span &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"text-red-500"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Take advantage of it&amp;lt;/span&amp;gt;
        &amp;lt;/h1&amp;gt;
        &amp;lt;p &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-2 text-gray-600 sm:mt-4 sm:text-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          Twitch will helps you find work-friendly rentals &lt;span class="k"&gt;in &lt;/span&gt;beautiful so you
          can enjoy some niece weather even when your&lt;span class="s1"&gt;'re not on vacation
        &amp;lt;/p&amp;gt;
        &amp;lt;div class="mt-4 sm:mt-6"&amp;gt;
          &amp;lt;a
            class="inline-block bg-red-500 text-white px-5 py-3 rounded-lg font-semibold font-medium shadow-lg shadow-red-400 uppercase tracking-widest sm:text-base"
            href=""
            &amp;gt;Book your space&amp;lt;/a
          &amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;

      &amp;lt;div class="hidden relative lg:block"&amp;gt;
        &amp;lt;img
          class="absolute inset-0 w-full h-full object-cover object-center"
          src="img/workonremote.webp"
          alt=""
        /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

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

&lt;/div&gt;



&lt;h1&gt;
  
  
  xl breakpont (xl 1280px @media (min-width: 1280px) { ... })
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sm  640px   @media (min-width: 640px) { ... }
md  768px   @media (min-width: 768px) { ... }
lg  1024px  @media (min-width: 1024px) { ... }
xl  1280px  @media (min-width: 1280px) { ... }
2xl 1536px  @media (min-width: 1536px) { ... }

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;h1&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;default: h1 er font size hobe&lt;/li&gt;
&lt;li&gt;text-2xl(24px ) এবং&lt;/li&gt;
&lt;li&gt;sm:text-4xl(36 px) এবং&lt;/li&gt;
&lt;li&gt;lg:text-3xl(30px)&lt;/li&gt;
&lt;li&gt;xl:text-4xl(36px)&lt;/li&gt;
&lt;li&gt;font-weight hobe font-bold&lt;/li&gt;
&lt;/ul&gt;


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

&lt;p&gt;p&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;defalut : p font আছে তাই আর sm:text-xl(20px) হবে&lt;/li&gt;
&lt;/ul&gt;


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

&lt;h3&gt;
  
  
  xl:max-w-xl set on content
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"bg-gray-300 grid lg:grid-cols-2"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div
        &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"px-8 py-12 max-w-md mx-auto sm:max-w-xl lg:px-12 lg:py-48 lg:max-w-full"&lt;/span&gt;
      &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"xl:max-w-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &amp;lt;img &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"h-10"&lt;/span&gt; &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/twitch.png"&lt;/span&gt; &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt; /&amp;gt;
          &amp;lt;img
            &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 rounded-lg shadow-xl sm:mt-8 sm:h-64 sm:w-full object-cover object-center lg:hidden"&lt;/span&gt;
            &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/workonremote.webp"&lt;/span&gt;
            &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
          /&amp;gt;
          &amp;lt;h1
            &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 text-2xl font-bold text-gray-900 sm:mt-8 sm:text-4xl lg:text-3xl xl:text-4xl"&lt;/span&gt;
          &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
            You can work on anywhere &lt;span class="nb"&gt;.&lt;/span&gt;
            &amp;lt;br &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"hidden lg:inline"&lt;/span&gt; /&amp;gt;
            &amp;lt;span &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"text-red-500"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Take advantage of it&amp;lt;/span&amp;gt;
          &amp;lt;/h1&amp;gt;
          &amp;lt;p &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-2 text-gray-600 sm:mt-4 sm:text-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
            Twitch will helps you find work-friendly rentals &lt;span class="k"&gt;in &lt;/span&gt;beautiful so you
            can enjoy some niece weather even when your&lt;span class="s1"&gt;'re not on vacation
          &amp;lt;/p&amp;gt;
          &amp;lt;div class="mt-4 sm:mt-6"&amp;gt;
            &amp;lt;a
              class="inline-block bg-red-500 text-white px-5 py-3 rounded-lg font-semibold font-medium shadow-lg shadow-red-400 uppercase tracking-widest sm:text-base"
              href=""
              &amp;gt;Book your space&amp;lt;/a
            &amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;

      &amp;lt;div class="hidden relative lg:block"&amp;gt;
        &amp;lt;img
          class="absolute inset-0 w-full h-full object-cover object-center"
          src="img/workonremote.webp"
          alt=""
        /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

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

&lt;/div&gt;



&lt;h3&gt;
  
  
  xl:mr-0
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"bg-gray-300 grid lg:grid-cols-2"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div
        &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"px-8 py-12 max-w-md mx-auto sm:max-w-xl lg:px-12 lg:py-48 lg:max-w-full xl:mr-0"&lt;/span&gt;
      &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"xl:max-w-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &amp;lt;img &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"h-10"&lt;/span&gt; &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/twitch.png"&lt;/span&gt; &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt; /&amp;gt;
          &amp;lt;img
            &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 rounded-lg shadow-xl sm:mt-8 sm:h-64 sm:w-full object-cover object-center lg:hidden"&lt;/span&gt;
            &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/workonremote.webp"&lt;/span&gt;
            &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
          /&amp;gt;
          &amp;lt;h1
            &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 text-2xl font-bold text-gray-900 sm:mt-8 sm:text-4xl lg:text-3xl xl:text-4xl"&lt;/span&gt;
          &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
            You can work on anywhere &lt;span class="nb"&gt;.&lt;/span&gt;
            &amp;lt;br &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"hidden lg:inline"&lt;/span&gt; /&amp;gt;
            &amp;lt;span &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"text-red-500"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Take advantage of it&amp;lt;/span&amp;gt;
          &amp;lt;/h1&amp;gt;
          &amp;lt;p &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-2 text-gray-600 sm:mt-4 sm:text-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
            Twitch will helps you find work-friendly rentals &lt;span class="k"&gt;in &lt;/span&gt;beautiful so you
            can enjoy some niece weather even when your&lt;span class="s1"&gt;'re not on vacation
          &amp;lt;/p&amp;gt;
          &amp;lt;div class="mt-4 sm:mt-6"&amp;gt;
            &amp;lt;a
              class="inline-block bg-red-500 text-white px-5 py-3 rounded-lg font-semibold font-medium shadow-lg shadow-red-400 uppercase tracking-widest sm:text-base"
              href=""
              &amp;gt;Book your space&amp;lt;/a
            &amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;

      &amp;lt;div class="hidden relative lg:block"&amp;gt;
        &amp;lt;img
          class="absolute inset-0 w-full h-full object-cover object-center"
          src="img/workonremote.webp"
          alt=""
        /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

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

&lt;/div&gt;



&lt;h1&gt;
  
  
  2xl breakpoint
&lt;/h1&gt;

&lt;h3&gt;
  
  
  2xl:grid-cols-5 2xl:col-span-2 2xl:col-span-3
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"bg-gray-300 grid lg:grid-cols-2 2xl:grid-cols-5"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div
        &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"px-8 py-12 max-w-md mx-auto sm:max-w-xl lg:px-12 lg:py-48 lg:max-w-full xl:mr-0 2xl:col-span-2"&lt;/span&gt;
      &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"xl:max-w-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
          &amp;lt;img &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"h-10"&lt;/span&gt; &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/twitch.png"&lt;/span&gt; &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt; /&amp;gt;
          &amp;lt;img
            &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 rounded-lg shadow-xl sm:mt-8 sm:h-64 sm:w-full object-cover object-center lg:hidden"&lt;/span&gt;
            &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"img/workonremote.webp"&lt;/span&gt;
            &lt;span class="nv"&gt;alt&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;
          /&amp;gt;
          &amp;lt;h1
            &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-6 text-2xl font-bold text-gray-900 sm:mt-8 sm:text-4xl lg:text-3xl xl:text-4xl"&lt;/span&gt;
          &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
            You can work on anywhere &lt;span class="nb"&gt;.&lt;/span&gt;
            &amp;lt;br &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"hidden lg:inline"&lt;/span&gt; /&amp;gt;
            &amp;lt;span &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"text-red-500"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Take advantage of it&amp;lt;/span&amp;gt;
          &amp;lt;/h1&amp;gt;
          &amp;lt;p &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"mt-2 text-gray-600 sm:mt-4 sm:text-xl"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
            Twitch will helps you find work-friendly rentals &lt;span class="k"&gt;in &lt;/span&gt;beautiful so you
            can enjoy some niece weather even when your&lt;span class="s1"&gt;'re not on vacation
          &amp;lt;/p&amp;gt;
          &amp;lt;div class="mt-4 sm:mt-6"&amp;gt;
            &amp;lt;a
              class="inline-block bg-red-500 text-white px-5 py-3 rounded-lg font-semibold font-medium shadow-lg shadow-red-400 uppercase tracking-widest sm:text-base"
              href=""
              &amp;gt;Book your space&amp;lt;/a
            &amp;gt;
          &amp;lt;/div&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;

      &amp;lt;div class="hidden relative lg:block 2xl:col-span-3"&amp;gt;
        &amp;lt;img
          class="absolute inset-0 w-full h-full object-cover object-center"
          src="img/workonremote.webp"
          alt=""
        /&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

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

&lt;/div&gt;



&lt;h1&gt;
  
  
  hover, Focus and Other States
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://tailwindcss.com/docs/hover-focus-and-other-states"&gt;link&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  hover
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eZyR1Lpy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/229160246-80834ee5-b6af-4c0e-90c8-7ed183744b3e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eZyR1Lpy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/229160246-80834ee5-b6af-4c0e-90c8-7ed183744b3e.png" alt="Screenshot 2023-03-30 211120" width="712" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; bg-red-500 hover:bg-red-400

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; hover:-translate-y-0 er maddome 2px lift hobe
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;hover:-translate-y-0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; transform er maddome any transform will be apply&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  focus
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--A4SDKzuC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/229164783-78dec724-bcd1-489d-950e-028486c269af.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--A4SDKzuC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/229164783-78dec724-bcd1-489d-950e-028486c269af.png" alt="Screenshot 2023-03-31 213106" width="779" height="543"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;focus:ring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AvoYOjFR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/229165668-82346a83-8613-4aab-876f-60e0ad442509.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AvoYOjFR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/229165668-82346a83-8613-4aab-876f-60e0ad442509.png" alt="Screenshot 2023-03-31 213514" width="649" height="478"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;focus:ring দিলে blue outline দেখা যাবে&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;focus:ring
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--U1cogJTe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/229166718-6aa0f363-255f-427a-833f-499dc57f9176.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--U1cogJTe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/229166718-6aa0f363-255f-427a-833f-499dc57f9176.png" alt="Screenshot 2023-03-31 213953" width="668" height="417"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;focus:ring-offset-2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;focus:ring-offset-2 দিলে blue outline দেখা যাবে&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JfQokXuo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/229167416-e0513122-08fc-41dd-91ae-10f84ae78417.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JfQokXuo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/229167416-e0513122-08fc-41dd-91ae-10f84ae78417.png" alt="Screenshot 2023-03-31 214249" width="658" height="424"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;focus:ring-red-500
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  active
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;active:bg-red-600
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Browser Workflow in Bangla</title>
      <dc:creator>Arifur Rahman</dc:creator>
      <pubDate>Fri, 28 Apr 2023 17:09:05 +0000</pubDate>
      <link>https://dev.to/r_if99/browser-workflow-in-bangla-4aol</link>
      <guid>https://dev.to/r_if99/browser-workflow-in-bangla-4aol</guid>
      <description>&lt;p&gt;React JS এর ক্ষেত্রে আমরা বারবারই একটা fancy word শুনে থাকি, সেটা হলো Virtual DOM! যে myth টা মানুষের মধ্যে ঢুকে আছে সেটা হলো - Virtual DOM, আমাদের চির পরিচিত browser DOM এর থেকে অনেক fast এবং একারণে vanilla DOM এর থেকে React অনেক fast User Interface Render করে! আসলেই কি তাই? React কি শুধুই Performance achieve করার জন্যই Virtual DOM use করে?&lt;/p&gt;

&lt;p&gt;আমরা শুনে থাকি DOM(document object model) টা slow and inefficient । কিন্তু এটা টিক না ।&lt;/p&gt;

&lt;p&gt;react এর dom এর ক্ষেত্রে বলা হয় এটা dom(document object model ) এর চেয়ে বেশি efficient and fast way তে view render করতে পারে ।&lt;/p&gt;

&lt;p&gt;&lt;em&gt;*we will discuss here why reactDOM faster and efficent.&lt;br&gt;
what is vartual dom&lt;br&gt;
why we will choose react *&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DOM কি আসলেই slow ?
&lt;/h2&gt;

&lt;p&gt;React JS এর ক্ষেত্রে আমরা বারবারই একটা fancy word শুনে থাকি, সেটা হলো Virtual DOM! যে myth টা মানুষের মধ্যে ঢুকে আছে সেটা হলো - Virtual DOM, আমাদের চির পরিচিত browser DOM এর থেকে অনেক fast। কথাটা সম্পর্ন ভুল ।&lt;/p&gt;

&lt;p&gt;truth is DOM আসলে যতয়েষ্ট fast । dom theke কোন element add or রিমুভ করা simple একটা জাভাস্ক্রীপ্ট object এ property set করার মতো ।&lt;/p&gt;

&lt;p&gt;যে process টা slow তা হল dom change হওয়ার পরে আমাদের চোখের সামনে সেটাকে দেখানোর জন্যে browser কে যে কাজটা করতে হয় সেই&lt;br&gt;
process টা slow&lt;/p&gt;

&lt;p&gt;সেটা বুজতে হলে আমাদের ব্রাউজার এর workflow টা বুজতে হবে&lt;/p&gt;

&lt;h2&gt;
  
  
  browser workflow
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;browser যখন html file receive করে ব্রাউজার এর render enginee সেটাকে parse করে (html parse ) এবং একটা dom tree বানাই । dom tree তে সব html এলিমেন্ট এক এক টা node হিসাবে থাকে&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TYtI_44A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/235184188-3e5e9477-dfcc-49e1-bb1c-2f01df0075ee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TYtI_44A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/235184188-3e5e9477-dfcc-49e1-bb1c-2f01df0075ee.png" alt="Screenshot 2023-04-28 210526" width="706" height="470"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;একই সাথে html এর সাথে যে css style গুলো এসেছিল সেগুলো আবার css parser এর কাছে যায় এবং সেটাকে parse করে document object (dom) এর মতো আর একটা model বানাই তাকে cssom বলে &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f9w75ssf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/235186814-acd7d2b2-4500-4526-bb65-fbb5ba4c58e5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f9w75ssf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/235186814-acd7d2b2-4500-4526-bb65-fbb5ba4c58e5.png" alt="Screenshot 2023-04-28 211549" width="800" height="550"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;তাহলে dom হল html এর object model আর ccsom হল style এর অবজেক্ট মডেল &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2aeYUei3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/235188821-46dde417-d383-4a92-8f75-3f5707c80545.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2aeYUei3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/235188821-46dde417-d383-4a92-8f75-3f5707c80545.png" alt="Screenshot 2023-04-28 212147" width="785" height="688"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;এই parse css আর parse html মিলে আর একটা render tree নামে tree বানাই &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p_NqqqXf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/235190632-c583ee42-d63c-4e51-b2c0-9fda1165d37a.png" alt="Screenshot 2023-04-28 213135" width="800" height="542"&gt;
&lt;/li&gt;
&lt;li&gt;এই render tree কে layout নামের একটা prase এর মদ্যে দিয়ে যেতে হয় &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3vtbORn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/235192812-14fa0acb-0671-4211-b740-2678588c9b80.png" alt="Screenshot 2023-04-28 214107" width="800" height="591"&gt; এই layout prase এ প্রতিটা render tree র element এর coordinate হিসেব করে element গুলোর সাথে attatch হয়ে যায় যেন screen এর কোন জায়গায় actually সেটা print হবে সেটা সে বুজতে পারে ।&lt;/li&gt;
&lt;li&gt;যেহেতু এখন render tree এর কাছে element আছে সেগুলোর style আছে এবং কোন জায়গায় print করতে হবে সেগুলোর coordinate আছে তাই এবার last prase painting এ paint বা print করে দেয় যাতে আমরা দেখতে পরি বা display করতে পরি!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7kwqtfJS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/235195723-6a5042dd-f1bf-4254-87f4-29926551a828.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7kwqtfJS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/235195723-6a5042dd-f1bf-4254-87f4-29926551a828.png" alt="Screenshot 2023-04-28 215429" width="800" height="458"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>git and github in bangla</title>
      <dc:creator>Arifur Rahman</dc:creator>
      <pubDate>Thu, 27 Apr 2023 06:57:22 +0000</pubDate>
      <link>https://dev.to/r_if99/git-and-github-in-bangla-75m</link>
      <guid>https://dev.to/r_if99/git-and-github-in-bangla-75m</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; git init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.name ”Arifur”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git config &lt;span class="nt"&gt;--global&lt;/span&gt; user.email ”arifur@gmail.com”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"v one"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; git log &lt;span class="nt"&gt;--oneline&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





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

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; git config &lt;span class="nt"&gt;--global&lt;/span&gt; core.autocrlf &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; git config &lt;span class="nt"&gt;--global&lt;/span&gt; http.postBuffer 524288000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  &lt;strong&gt;Git vs. GitHub: What's the difference?&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Git a sadaronoto doi babe kaj kora jai&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;git gui&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;git terminal&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Git gui r git terminal er modde git terminal use kora better.git gui holo graphical user interface&lt;/p&gt;

&lt;p&gt;Sobar prothom amara akta working directory use korte hobe .je working directory te আমরা amader project file golo rakbo.ai working directory ta amra git er reposrity hisabe initialliaz korbo.&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Lets create a git reposority&lt;/strong&gt;
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Prothom a floder create korte hobe .folder er name dibo anything u want ami akane folder name dilam pc&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ai pc name er floder ta k git er reposority hisabe create korte hobe .jar fole ai folder a kono codeing kori change kori .tokon ta git track korte pare.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Git gui diye repository create kora :&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Protom e pc folder a jete hobe r right click korle git gui name a option a click kore git gui ta open korbo&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;Then create new reposority te click korbo&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;Then browse name er option a giye pc folder ta select korte hobe .then pc folder a .git name file asbe.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Terminal diye repository create kora :&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Coffee name akta noton folder korbo&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Then coffee folder a gitbash terminal open korbo&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Git init&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;er maddome coffee folder er repository create hoye gelo . akon Jodi ai coffee folder a kono kicho poriborton kori tobe ta git track korbe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jeheto git a oonek jon mile kaj kora jai seheto git er o kinto idenfication dorkar .er janno akta user name r email git er modde diye dite hobe&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;Git a user name r email 2 ta way te deya jai akta holo&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;1.globally&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;2.locally&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Globally kibae user name r email setup:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;protekta floder er jonno aki name r email&lt;/p&gt;

&lt;p&gt;$ git config --global user.name ”Arifur”&lt;/p&gt;

&lt;p&gt;$ git config --global user.email ”&lt;a href="mailto:arifur@gmail.com"&gt;arifur@gmail.com&lt;/a&gt;”&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;locally kibae user name r email setup:&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;protekta floder er jonno alada alada name r email&lt;/p&gt;

&lt;p&gt;$git config user.name ”Arifur”&lt;/p&gt;

&lt;p&gt;$git config git user.email ”&lt;a href="mailto:Arifur@gmail.com"&gt;Arifur@gmail.com&lt;/a&gt;”&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Apner git a kon kon user name r email set kora ace ta kibabe ber korbo:&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git config –list
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Rescan,unstage,stage&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Git gui te amra stage unstage kore cilam&lt;/p&gt;

&lt;p&gt;Akon ta amra terminal er madomme korbo&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;$git status&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Er mane holo cold and hot name r file ta git track kora soro kore nai&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to stage?&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git add cold.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Er maddome staging kora hoi&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Kibabe bojbo staging kora hoyece kina:&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Ebabe akta akta kore kob ei somoi sapekoo.tar jonno 2ta shortcut code ace ta holo&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; git add &lt;span class="nt"&gt;--all&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;remember ekane fullstop ace&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Attokon ja korlam ta holo working area theke staging area te niye gelam&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Steging area the niye jawar por sei change golo k commit korte hobe&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;$ git commit&lt;/p&gt;

&lt;p&gt;$ git commit like enter click korle onno akti terminal a chole jabe&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to commit&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git commit
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;$ git commit like enter click korle onno akti terminal a chole jabe&lt;/p&gt;

&lt;p&gt;Then I button press korle insert option asbe&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Akon commit er je massage ta add korte cacci ta likbo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Erpor keyboard er esc button click korte hobe tarpor press korte hobe :x&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fole 2 ta file chang hoyeche&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;How to commit(shortcut)&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;   &lt;span class="nv"&gt;$git&lt;/span&gt; commit &lt;span class="nt"&gt;-m&lt;/span&gt; “chocolate added”
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;  &lt;span class="nv"&gt;$git&lt;/span&gt; commit &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"v one"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Git log&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Git log er kaj holo ai porjonto apni joto golo comit kore chen ta deka&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;git log –oneline
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;&lt;/code&gt;er sobgolo short kore dekabe&lt;/p&gt;

&lt;p&gt;File a chane ene exprement&lt;/p&gt;

&lt;p&gt;File kicho add kore&lt;/p&gt;

&lt;p&gt;Then terminal e $git status run korle dekabe modifier:je file a midify korhi&lt;/p&gt;

&lt;p&gt;Tarpor git staging korbo $git add . er maddome&lt;/p&gt;

&lt;p&gt;Tarpor git comit korbo&lt;/p&gt;

&lt;p&gt;$ git commit -m "ice cube added"&lt;/p&gt;

&lt;p&gt;Er maddome&lt;/p&gt;

&lt;p&gt;Tarpor amra ki ki kaj koreci ta dekbo&lt;/p&gt;

&lt;p&gt;$ git log --oneline&lt;/p&gt;

&lt;p&gt;Er maddome&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Git checkout&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ami bolbosto ice cube stage a chole gechi ami ager stage chole jete cai.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$git&lt;/span&gt; checkout 690f09
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$git&lt;/span&gt; checkout 85167d5
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;$git checkout master dile ager kaj e fire jabo&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Git diff&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Git diff er maddome last er stage ace sei stage theke akon je stage ace tar different tole dore&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;$git show&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Chochalate added a ki ki proriborton hoyeche ta apni $git show er maddome dekte parben&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;$git rm&lt;/strong&gt;
&lt;/h2&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Akon remote repository er sate local repository er connect kibabe hoi?&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;ortat github ba gitlab er sate local repository kibabe connect hobe ba kibabe sync hobe.ortat apner local repository je kaj golo korche ta jeno remote repository te atumaticly chole jai.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github accout open&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Nije nije kore naw&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Kibabe amder project github account e reke debo?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Sei jonno github e a reposority create korte hobe.&lt;/p&gt;

&lt;p&gt;Eta copy korar por terminal e giye amra command ta past korbo&lt;/p&gt;

&lt;p&gt;Er fole local reposiroty the je project ace ta amra remote repository the push kore patiye debo&lt;/p&gt;

&lt;p&gt;Ekane github username r password dite hobe&lt;/p&gt;

&lt;p&gt;File golo successfully remote repository the chole eseche&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Ssh key&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ekane akta problem holo jokon file ta push korben tokon user name r password ta bar bar chibe so eta akta worse&lt;/p&gt;

&lt;p&gt;Ei sommosa somadan er jonno amra use korbo ssh key&lt;/p&gt;

&lt;p&gt;Lets go….&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;start from here&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Then terminal a&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; rsa &lt;span class="nt"&gt;-b&lt;/span&gt; 4096 &lt;span class="nt"&gt;-C&lt;/span&gt; &lt;span class="s2"&gt;"_your&lt;/span&gt;&lt;span class="se"&gt;\_&lt;/span&gt;&lt;span class="s2"&gt;email@example.com_"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then enter&lt;/p&gt;

&lt;p&gt;&amp;gt; Enter a file in which to save the key (/c/Users/&lt;em&gt;you&lt;/em&gt;/.ssh/id*rsa):*[Press enter]_&lt;/p&gt;

&lt;p&gt;Then&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;eval&lt;/span&gt; &lt;span class="si"&gt;$(&lt;/span&gt;ssh-agent &lt;span class="nt"&gt;-s&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ei code run korle apnak a agent code dibe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Agent pid 59566
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;ssh-add ~/.ssh/id_rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Code ta like run koron enter press korte hobe&lt;/p&gt;

&lt;p&gt;Eake password ta abr dite hobe&lt;/p&gt;

&lt;p&gt;Last apnak poro jinis ta copy korte hobe .copy kore apner github a eta add korte hobe&lt;/p&gt;

&lt;p&gt;Tahole eta kibabe copy korben&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;clip &amp;lt; ~/.ssh/id_rsa.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eta run korle sate sate eta apner clipboard a copy hoye giyeche&lt;/p&gt;

&lt;p&gt;Akon amra amader github e amader key ta add korbo&lt;/p&gt;

&lt;p&gt;Add shh key the press korbo&lt;/p&gt;

&lt;p&gt;Then create reposory the click korbo&lt;/p&gt;

&lt;p&gt;Terminal e past korbo&lt;/p&gt;

&lt;p&gt;Then yes diben.yes dile project ta user name email password chara push hoye giye che .&lt;/p&gt;

&lt;p&gt;Then refresh dile project ta github a chole asbe&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ssh key process end here&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Remote repository theke local repository ba working directory the clone kore kibabe niye aste paren ?&lt;/strong&gt;
&lt;/h1&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Way1:&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;But this is not goot way&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Way2(git clone):&lt;/strong&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;(git clone) er name change:&lt;/strong&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Git fetch git pull&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;ekane ai project ti push pull korle user name r password r chibe na .&lt;/p&gt;

&lt;p&gt;ai project dibe amra apnak fetch and pull dekabo so&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;ai project er remote repository te chole jabo&lt;/p&gt;

&lt;p&gt;then amade student.txt file ace tar modde kicho likbo ba poriborton korbo&lt;/p&gt;

&lt;p&gt;file er edit option a giye amra student file ta the kicho edit korbo ba poriborton korbo&lt;/p&gt;

&lt;p&gt;edit kora por commit option e giye kicho add korbo&lt;/p&gt;

&lt;p&gt;ei edit ti Jodi amra local repository the deki ta hole deka jabe student.txt file a kichoi add hoi nai&lt;/p&gt;

&lt;p&gt;Ekane $git status diye dekle dekben akne kono kicho leka nai&lt;/p&gt;

&lt;p&gt;Erpor ekane $git fetch like enter press korbo then password debo&lt;/p&gt;

&lt;p&gt;Er pole local repository bojte parbe ekane a1 commit eseche&lt;/p&gt;

&lt;p&gt;But student.txt file one korle deben kono kichp add hoi nai&lt;/p&gt;

&lt;p&gt;Tar jooono $git pull like enter press korle r ssh er password ta debo dekben student.txt file a add hoyeche&lt;/p&gt;

&lt;p&gt;***remember git fetch holo github er file er je change golo ace ta locol repository the obogoto kora .r git pull holo remote repository ba github te je poribor hoiye ta local repository te niye asa&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git branching:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;$git branch idbranch er maddome branch create kora hoi&lt;/p&gt;

&lt;p&gt;$git branch er madomme koita brach ace ta jana jai&lt;/p&gt;

&lt;p&gt;$git checkout idbrach er maddome ak branch theke onno branch e jawa jai&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Branch create kora sate sate brance poriborton kora jai kibabe?&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$git&lt;/span&gt; checkout &lt;span class="nt"&gt;-b&lt;/span&gt; home-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;a&gt;&lt;/a&gt;&lt;strong&gt;Abar master branch e jawae jonno ki korte hobe?&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$git&lt;/span&gt; checkout master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;Home branch er change golo kibabe master branch e niye jabo?&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$git&lt;/span&gt; marge home-branch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;a&gt;&lt;/a&gt;&lt;strong&gt;Kibabe akta branch delete korbo?&lt;/strong&gt;
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$git&lt;/span&gt; branch –d idbranch
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;git stash and clean&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;Add image/screenshot of your project to your GitHub repository&lt;/strong&gt;
&lt;/h1&gt;

&lt;h1&gt;
  
  
  &lt;strong&gt;How can I rename a Git branch?&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;There may be times when you need to rename a Git branch. This is because if the naming is wrong and other developers continue to work with it, you may run into problems. Fortunately, despite the tight integration and various forks, if you want to rename a Git branch, it’s not a big issue. To do this, use the -m command. The corresponding syntax always follows the same structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-m&lt;/span&gt; &amp;lt;old-name&amp;gt; &amp;lt;new-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, there are differences between branches that you edit locally and those that are already remote. Below we explain the steps for both cases.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Rename a local Git branch&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;A local Git branch exists only on your computer. You make changes and tests here without other developers noticing. Renaming it can therefore be done quickly.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;In the command line, select the Git branch you want to rename. The command for this is
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout old-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;You will get a confirmation that you have selected the correct branch. This will read
&lt;code&gt;Switched to branch 'old-name'&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Now perform the actual rename for the local Git branch. The appropriate command for this is:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-m&lt;/span&gt; new-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Alternatively, you have the option to rename the Git branch via the master. To do this, use the following steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Switch to the master via the command
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git checkout master
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Now enter the following command if you want to rename a
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Git branch: git branch &lt;span class="nt"&gt;-m&lt;/span&gt; old-name new-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;To ensure that the rename was successful, retrieve the current status of the branch using the
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;command.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Renaming a remote Git branch&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In a remote repository, you cannot simply rename a Git branch, as this would lead to complications. Instead, you need to delete the old name and then add the branch with the new name. Fortunately, this is not too hard either and can be done with a few simple commands. As with the local branch, you have two options.&lt;/p&gt;

&lt;p&gt;First, make sure the local branch has the correct, new name. The appropriate command is&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; git branch &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now delete the branch with the old, incorrect name from the remote repository. To do this, use the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &lt;span class="nt"&gt;--delete&lt;/span&gt; old-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify that the old branch has been deleted properly.&lt;br&gt;
Now add the branch with the correct name. For this, use the command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &lt;span class="nt"&gt;-u&lt;/span&gt; new-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Lastly, perform a reset of the upstream branch to ensure that the changes are effective.&lt;br&gt;
However, if you want to rename the remote Git Branch with just one command, you also have the following option.&lt;/p&gt;

&lt;p&gt;Enter the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin :old-name new-name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then also perform a &lt;strong&gt;reset of the upstream branch&lt;/strong&gt; as described above.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion: Git branch rename&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Mistakes happen, and Git is designed to let you rename Git branches easily. It can be done quickly and with a few commands. While the process is a rename in the true sense for local branches, a deletion is necessary in the remote branch. Once the error is fixed, it makes sense to carefully double-check. Afterwards you and other developers can continue working on your project without any restrictions.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>React js in Bangla</title>
      <dc:creator>Arifur Rahman</dc:creator>
      <pubDate>Wed, 26 Apr 2023 06:58:04 +0000</pubDate>
      <link>https://dev.to/r_if99/react-js-in-bangla-45p2</link>
      <guid>https://dev.to/r_if99/react-js-in-bangla-45p2</guid>
      <description>&lt;h1&gt;
  
  
  কেন react useful ? কেন react lagbe ?
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"container"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div&amp;gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
          &amp;lt;button &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Increment +&amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
 &amp;lt;/div&amp;gt;


    &amp;lt;script&amp;gt;
      const display &lt;span class="o"&gt;=&lt;/span&gt; document.getElementById&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      const button &lt;span class="o"&gt;=&lt;/span&gt; document.getElementById&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nb"&gt;let &lt;/span&gt;counter &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt;

      button.addEventListener&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"click"&lt;/span&gt;, &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        counter++&lt;span class="p"&gt;;&lt;/span&gt;
        display.textContent &lt;span class="o"&gt;=&lt;/span&gt; counter&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="o"&gt;})&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &amp;lt;/script&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;একটা মাত্র counter এর জন্যে এভাবে টিক আছে । কিন্ত&lt;br&gt;
এটা লার্জার application এর জন্যে applicable না ।&lt;/p&gt;

&lt;p&gt;যদি আমাদের aro একটা কাউন্টার এর দরকার হয় । তাহলে আমাদের aro একটা counter ক্রিয়েট করা লাগবে । তারপর id আর class golo change করা লাগবে । তারপর js file এ id আর class গলো change করা লাগবে&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &amp;lt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nt"&gt;--&lt;/span&gt; কেন react useful ? কেন react lagbe ? &lt;span class="nt"&gt;--&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"container"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div&amp;gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
          &amp;lt;button &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Increment +&amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

    &amp;lt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nt"&gt;--&lt;/span&gt; another counter create&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if &lt;/span&gt;i create with same name it will show error&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"container1"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &amp;lt;div&amp;gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display1"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
          &amp;lt;button &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"button1"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Increment +&amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
      &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;script&amp;gt;
      const display &lt;span class="o"&gt;=&lt;/span&gt; document.getElementById&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      const button &lt;span class="o"&gt;=&lt;/span&gt; document.getElementById&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nb"&gt;let &lt;/span&gt;counter &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt;

      button.addEventListener&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"click"&lt;/span&gt;, &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        counter++&lt;span class="p"&gt;;&lt;/span&gt;
        display.textContent &lt;span class="o"&gt;=&lt;/span&gt; counter&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="o"&gt;})&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

      //   another counter create&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if &lt;/span&gt;i create with same name it will show error&lt;span class="o"&gt;)&lt;/span&gt;
      const display1 &lt;span class="o"&gt;=&lt;/span&gt; document.getElementById&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"display1"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      const button1 &lt;span class="o"&gt;=&lt;/span&gt; document.getElementById&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"button1"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nb"&gt;let &lt;/span&gt;counter1 &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt;

      button1.addEventListener&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"click"&lt;/span&gt;, &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        counter1++&lt;span class="p"&gt;;&lt;/span&gt;
        display1.textContent &lt;span class="o"&gt;=&lt;/span&gt; counter1&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="o"&gt;})&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এটা লার্জার application এর জন্যে applicable না ।সে জন্যে react আসছে&lt;/p&gt;

&lt;h1&gt;
  
  
  whyNeedReactandProblemSolve এই branch e amrar react js add korbo (uporer counter system ta amra vanilla js diye korecilam ta akon amra korbo react js diye)
&lt;/h1&gt;

&lt;h2&gt;
  
  
  how to add react js
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://legacy.reactjs.org/docs/add-react-to-a-website.html"&gt;add react to a website&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  with cdn
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&amp;lt;&lt;span class="o"&gt;!&lt;/span&gt;DOCTYPE html&amp;gt;
&amp;lt;html &lt;span class="nv"&gt;lang&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"en"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
  &amp;lt;&lt;span class="nb"&gt;head&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
    &amp;lt;meta &lt;span class="nv"&gt;charset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"UTF-8"&lt;/span&gt; /&amp;gt;
    &amp;lt;meta http-equiv&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"X-UA-Compatible"&lt;/span&gt; &lt;span class="nv"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"IE=edge"&lt;/span&gt; /&amp;gt;
    &amp;lt;meta &lt;span class="nv"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"viewport"&lt;/span&gt; &lt;span class="nv"&gt;content&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt; /&amp;gt;
    &amp;lt;title&amp;gt;Document&amp;lt;/title&amp;gt;
    &amp;lt;&lt;span class="nb"&gt;link &lt;/span&gt;&lt;span class="nv"&gt;rel&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"stylesheet"&lt;/span&gt; &lt;span class="nv"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"style.css"&lt;/span&gt; /&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    &amp;lt;div &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"root"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;/div&amp;gt;
  &amp;lt;script &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://unpkg.com/react@18/umd/react.development.js"&lt;/span&gt; crossorigin&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://unpkg.com/react-dom@18/umd/react-dom.development.js"&lt;/span&gt; crossorigin&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"counter.js"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;/script&amp;gt;

&amp;lt;/body&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;counter js file&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(React);
console.log(ReactDOM);

const domContainer = document.querySelector('#root');
// render: ƒ render(element, container, callback)
// render() method 2ta parameter recive kore 1.ki print korbe 2. kon jaigai print korbo
ReactDOM.render('hello world', domContainer);

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

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tohOpfqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234030878-285ac780-1f7f-41c3-bf9b-e1f146fb8062.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tohOpfqL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234030878-285ac780-1f7f-41c3-bf9b-e1f146fb8062.png" alt="Screenshot 2023-04-24 203323" width="800" height="63"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;both are object&lt;/p&gt;

&lt;p&gt;React হল htmlগলো generate করবে আর create করবে&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e76ML8gY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234032377-ba905adc-cef0-45dc-b66a-119315f7721e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e76ML8gY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234032377-ba905adc-cef0-45dc-b66a-119315f7721e.png" alt="Screenshot 2023-04-24 204620" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ReactDOM হল আমাদের browser এর dom এ render করবে যেন আমরা ডেকতে পাই&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--enTLGlAC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234033089-54cc0e6a-c4ba-4a61-941e-103ef3e736c8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--enTLGlAC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234033089-54cc0e6a-c4ba-4a61-941e-103ef3e736c8.png" alt="Screenshot 2023-04-24 204824" width="800" height="201"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;তাহলে ২ টা আলাদা কেন ? কারণ react সুদমাত্র browser এর জন্যে বানান হয় নাই । react mobile এর জন্য ও বান্নান হয়েছে । তখন আমরা ReactDOM এর পরিবর্তে ReactNative use করব&lt;/p&gt;

&lt;p&gt;আমরা always use করব react । ৯০% কাজ করবে react . এবং বাকি কাজ করবে ReactDOM display করার জন্যে&lt;/p&gt;

&lt;h1&gt;
  
  
  note
&lt;/h1&gt;

&lt;p&gt;ReactDOM.render is no longer supported in React 18&lt;/p&gt;

&lt;p&gt;render: ƒ render(element, container, callback)&lt;/p&gt;

&lt;p&gt;result&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2D-ZXJNB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234034021-2d68204c-b905-4f37-8f64-227703e2fecd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2D-ZXJNB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234034021-2d68204c-b905-4f37-8f64-227703e2fecd.png" alt="Screenshot 2023-04-24 205214" width="487" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  ReactDOM diye amra sodomatro text render korechi . কিন্তু আমরা চাইলে যে কুন কিছ render করতে পরি । তার জন্যে আমরা use করব React library . react amader kicho useful function diyeche jegolo diye amra react element banate pari
&lt;/h3&gt;

&lt;h1&gt;
  
  
  react.createElement()
&lt;/h1&gt;

&lt;p&gt;lets create first react element with react.createElement&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;console.log&lt;span class="o"&gt;(&lt;/span&gt;React&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
console.log&lt;span class="o"&gt;(&lt;/span&gt;ReactDOM&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
const myElemnt &lt;span class="o"&gt;=&lt;/span&gt; React.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"div"&lt;/span&gt;,null,&lt;span class="s2"&gt;"hello world3"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;myElemnt, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;React.createElement এর মদ্যমে আমরা আমদের এলিমেন্ট create করলাম. এখানে আমরা React.createElement() এর মদ্যে ৩ টা parameter পাঠাবো । । ১.কি এলিমেন্ট ক্রিয়েট করতে চাচী । আমরা div এলিমেন্ট create করতে চআছি ২.কি datatype পাস করতে হবে ৩.সেই এলিমেন্ট এর ভেতরে কি কন্টেন্ট থাকবে।&lt;/p&gt;

&lt;p&gt;এখানে আমরা react এলিমেন্ট create করলাম । html এলিমেন্ট না&lt;/p&gt;

&lt;p&gt;last এ আমরা ReactDOM কে বলে দিলাম myElement কে root div এ render কর&lt;br&gt;&lt;br&gt;
ReactDOM.render(myElemnt, domContainer);&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1qAFM0ll--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234034603-10d49f58-43e5-4b34-8863-fc590a498229.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1qAFM0ll--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234034603-10d49f58-43e5-4b34-8863-fc590a498229.png" alt="Screenshot 2023-04-24 205414" width="533" height="133"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  কিভাবে React.createElement() এর মদ্যমে div এর মদ্যে p add korbo
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;    &amp;lt;div &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"root"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;/div&amp;gt;
    &amp;lt;div &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"root2"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;/div&amp;gt;
  &amp;lt;script &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://unpkg.com/react@18/umd/react.development.js"&lt;/span&gt; crossorigin&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://unpkg.com/react-dom@18/umd/react-dom.development.js"&lt;/span&gt; crossorigin&amp;gt;&amp;lt;/script&amp;gt;
  &amp;lt;script &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"counter.js"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;counter.js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;console.log&lt;span class="o"&gt;(&lt;/span&gt;React&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
console.log&lt;span class="o"&gt;(&lt;/span&gt;ReactDOM&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
const myElemnt &lt;span class="o"&gt;=&lt;/span&gt; React.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"div"&lt;/span&gt;,null,&lt;span class="s2"&gt;"hello world3"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;myElemnt, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;


// div এর মদ্যে p add করতে চাচী
const domContainer2 &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root2'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
const myElemnt2 &lt;span class="o"&gt;=&lt;/span&gt; React.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"div"&lt;/span&gt;, null, React.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"p"&lt;/span&gt;,null,&lt;span class="s2"&gt;"hello world4"&lt;/span&gt;&lt;span class="o"&gt;))&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;myElemnt2, domContainer2&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BWyUqyJM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234035199-e2b1c2e0-130e-4c48-b290-a8ff1e969448.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BWyUqyJM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234035199-e2b1c2e0-130e-4c48-b290-a8ff1e969448.png" alt="Screenshot 2023-04-24 205604" width="366" height="189"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  যদি div এর মদ্যে ২ টা p দিতে চাই
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &amp;lt;body&amp;gt;
    &amp;lt;div &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"root"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;/div&amp;gt;
    &amp;lt;script
      &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://unpkg.com/react@18/umd/react.development.js"&lt;/span&gt;
      crossorigin
    &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;/script&amp;gt;
    &amp;lt;script
      &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://unpkg.com/react-dom@18/umd/react-dom.development.js"&lt;/span&gt;
      crossorigin
    &lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;/script&amp;gt;
    &amp;lt;script &lt;span class="nv"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"counter.js"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&amp;lt;/script&amp;gt;
  &amp;lt;/body&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;counter.js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
const myElemnt &lt;span class="o"&gt;=&lt;/span&gt; React.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"div"&lt;/span&gt;, null,[
    React.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"p"&lt;/span&gt;, null, &lt;span class="s2"&gt;"hello world"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;,
    React.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"p"&lt;/span&gt;, null, &lt;span class="s2"&gt;"hello world"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;])&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;myElemnt, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;React library টা any react element create kore dei আর&lt;br&gt;
ফাইনালি ReactDOM react element recive করে সেটা কে আমদের browser dom এর জন্যে html element বানিয়ে দেয় মানে browser e render kore dei&lt;/p&gt;

&lt;p&gt;ReactDOM এর জায়গায় মোবাইল এর জন্যে আমরা ইউজ করতে পরি ReactNative&lt;/p&gt;
&lt;h1&gt;
  
  
  এখন question হল react দিয়ে আমরা এভাবে এলিমেন্ট create করে আমাদের লাভ কি ?
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
const myElemnt &lt;span class="o"&gt;=&lt;/span&gt; React.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"div"&lt;/span&gt;, null,[
    React.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"p"&lt;/span&gt;, null, &lt;span class="s2"&gt;"hello world"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;,
    React.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"p"&lt;/span&gt;, null, &lt;span class="s2"&gt;"hello world"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;])&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;myElemnt, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;এভাবে করলে জিনিসটা আরো কোটিং হয়ে গেল । আমরা যখন html লিখি dom কিন্ত আমাদের এভাবে এইচটিএমএল এলিমেন্ট ক্রিয়েট করে&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nb"&gt;let &lt;/span&gt;p &lt;span class="o"&gt;=&lt;/span&gt; document.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"p"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
p.innerHTML &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hello vanilla js"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
domContainer.appendChild&lt;span class="o"&gt;(&lt;/span&gt;p&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;result&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--HEDKr6_1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234035696-412c60d2-e30c-4744-af0f-4ad72f24add6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HEDKr6_1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234035696-412c60d2-e30c-4744-af0f-4ad72f24add6.png" alt="Screenshot 2023-04-24 205754" width="313" height="131"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;html এ আমরা এভাবে ই লিখী । কারণ এই সীনটেক্স টা মদের জন্যে সহজ&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&amp;lt;div &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"root"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
   &amp;lt;p&amp;gt;hello vannilla js&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;আমরা এভাবেই লিখী কিন্ত ব্রাউজার আমাদের এইচটিএমএল এলিমেন্ট parse kore createElement er madoome element create kore&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="nb"&gt;let &lt;/span&gt;p &lt;span class="o"&gt;=&lt;/span&gt; document.createElement&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"p"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   p.innerHTML &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"hello vanilla js"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   domContainer.appendChild&lt;span class="o"&gt;(&lt;/span&gt;p&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;html সদমাত্র আমাদের এই কাজটা কে সহজ করে দেয়&lt;br&gt;
একটা সহজ সীটেক্টটিক সুগার দেয় যাতে আমরা সহজে UI টা বানাতে পরি&lt;/p&gt;

&lt;p&gt;react o same ভাবে তার createElement function diye নিজের জন্যে এলিমেন্ট বানিয়ে নেই এবং সব এলিমেন্ট জোড়া লাগিয়ে তার একটা seperate DOM create kore । এটাকে বলে VIRTUAL DOM&lt;/p&gt;

&lt;p&gt;আমরা html element বানাই html markup syntex diye . টিক তেমনি react o amader তাদের একটা markup syntex দিয়েছে যেটা দিয়ে আমরা markup syntex element বানাতে পারি । এটাকে JSX - JAVASCRIPT XML বলে । যেটা ডেকতে ৯০% html এর মতো কিন্ত html না ।&lt;/p&gt;

&lt;p&gt;JSX use করে আমরা react element banate pari&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;// &lt;span class="o"&gt;!&lt;/span&gt; create react element using jsx
const myElement &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;
    &amp;lt;div&amp;gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button&amp;gt;Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;first bracket এর ভেতরে রেখে একটা variable এর ভেতরে রাখলে এটা createElement call kore kore একটা react এর এলিমেন্ট ক্রিয়েট করে দিবে&lt;/p&gt;

&lt;p&gt;jsx যদি না তাকত তবে আমাদের এভাবে React.createElement() লিকতে হয়তো&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
React.createElement&lt;span class="o"&gt;(&lt;/span&gt;
  &lt;span class="s2"&gt;"div"&lt;/span&gt;,
  null,
  React.createElement&lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="s2"&gt;"h1"&lt;/span&gt;,
    &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt; : display,
    &lt;span class="o"&gt;}&lt;/span&gt;,
    &lt;span class="s2"&gt;"0"&lt;/span&gt;
  &lt;span class="o"&gt;)&lt;/span&gt;,
  React.createElement&lt;span class="o"&gt;(&lt;/span&gt;
    &lt;span class="s2"&gt;"div"&lt;/span&gt;,
    null,
    React.createElement&lt;span class="o"&gt;(&lt;/span&gt;
      &lt;span class="s2"&gt;"button"&lt;/span&gt;,
      &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nb"&gt;id&lt;/span&gt; : &lt;span class="s2"&gt;"button"&lt;/span&gt;,
      &lt;span class="o"&gt;}&lt;/span&gt;
      &lt;span class="s2"&gt;"Increment +"&lt;/span&gt;
    &lt;span class="o"&gt;)&lt;/span&gt;

  &lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;)&lt;/span&gt;


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

&lt;/div&gt;



&lt;p&gt;কিন্ত কথা হচ্ছে এই কোডেটা জাভাস্ক্রীপ্ট ফাইল এ লিকচি কিন্ত জাভাস্ক্রীপ্ট jxs কোড বুজে না&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const myElement &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;
    &amp;lt;div&amp;gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button&amp;gt;Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

&lt;span class="o"&gt;)&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;myElement, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;সেই জন্যে আমাদের use করতে হবে transpiler যেমন-bable ।&lt;br&gt;
babel এই jsx কে vanilla javascript এ transpile করবে&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7Iz2njNH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234041263-73d5c377-ffde-487a-a507-57d3865373e7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7Iz2njNH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234041263-73d5c377-ffde-487a-a507-57d3865373e7.png" alt="Screenshot 2023-04-24 211737" width="800" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;transpile করার জন্যে আমরা babel ওয়েবসাইট এর সেটাপ এ গিয়ে লিংক টা কপি করে আমাদের index। html ফাইল rakbo&lt;/p&gt;

&lt;p&gt;&lt;a href="https://babeljs.io/setup/#installation"&gt;https://babeljs.io/setup/#installation&lt;/a&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;script src="https://unpkg.com/@babel/standalone/babel.min.js"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script type="text/babel" src="counter.js"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;type="text/babel" টাইপ="টেক্সট/বাবেল" দিব&lt;/p&gt;

&lt;p&gt;সদারণত থাকে type="text/js"&lt;/p&gt;

&lt;p&gt;counter.js file ta babel diye gore asbe&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const myElement = (
    &amp;lt;div class="container"&amp;gt;
        &amp;lt;h1 id="display"&amp;gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button&amp;gt;Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

)
ReactDOM.render(myElement, domContainer);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  still why we use react ?
&lt;/h2&gt;

&lt;p&gt;আমাদের এই কাউন্টার এর বাটন এ ক্লিক করলে increment হবে তা কিভাবে করব । এই ফাংশনালিটি গুলো কোথায়&lt;br&gt;
অদ্য করব&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
// &lt;span class="o"&gt;!&lt;/span&gt; create react element using jsx
const myElement &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;
    &amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"container"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button&amp;gt;Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;

&lt;span class="o"&gt;)&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;myElement, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;myElement টা কে simply Increment নামে function এর মদ্যে নিয়ে sekan theke return kore debo নেব.&lt;br&gt;
এর পর ReactDOM.render(Increment(), domContainer); এ increment() function ক্ call kore debo&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
// &lt;span class="o"&gt;!&lt;/span&gt; create react element using jsx
const Increment &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;div &lt;span class="nv"&gt;class&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"container"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button&amp;gt;Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;Increment&lt;span class="o"&gt;()&lt;/span&gt;, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;still kaj korbe&lt;br&gt;
Increment() না লিখে  এভাবে লিকতে পারবে । এটা jsx এ call করার সিস্টেম&lt;/p&gt;

&lt;p&gt;kaj korche&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ItTjrM0m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234081819-4d4b582e-8267-48eb-9001-d8f21fd0463d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ItTjrM0m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234081819-4d4b582e-8267-48eb-9001-d8f21fd0463d.png" alt="Screenshot 2023-04-25 001619" width="620" height="298"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  button a click korle kivabe increment hobe
&lt;/h2&gt;



&lt;p&gt;```let num = 0;&lt;br&gt;
const display = document.querySelector("#display");&lt;br&gt;
const button = document.querySelector('#button');&lt;/p&gt;

&lt;p&gt;button.addEventListener('click', function () {&lt;br&gt;
    num++;&lt;br&gt;
    display.textContent=num&lt;br&gt;
})&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;


ei code ta increment function er niche bosate hobe.ReactDOM.render(&amp;lt;Increment /&amp;gt;, domContainer); এর ও নিচে বসতে হবে

যেমন



```sh
const domContainer = document.querySelector('#root');
// ! create react element using jsx
const Increment = () =&amp;gt; {
    return(&amp;lt;div className="container"&amp;gt;
        &amp;lt;h1 id="display"&amp;gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button id="button"&amp;gt;Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;)
};
ReactDOM.render(&amp;lt;Increment /&amp;gt;, domContainer);

let num = 0;
const display = document.querySelector("#display");
const button = document.querySelector('#button');

button.addEventListener('click', function () {
    num++;
    display.textContent=num
})

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

&lt;/div&gt;


&lt;p&gt;এখন কাজ করবে । কিন্ত কাজ করলেও system টা ত আগের মতো vanilla js এর মতো রইল । এখন আমাদের dom element দরতে হচ্ছে const display = document.querySelector("#display");&lt;br&gt;
dom এ manually content render করতে হচ্ছে display.textContent=num&lt;/p&gt;

&lt;p&gt;এবং counter এক এর বেশি হলে আবার কোড dublicate করতে হচ্ছে&lt;/p&gt;

&lt;p&gt;তাহলে react এখানে আমাদের কি বেনিফিট দিচ্ছে। befinte পাচ্ছিনা কারণ আমরা react এর সবগলো এখন ও use করি নাই&lt;/p&gt;

&lt;p&gt;most important হল আমরা state কে use করি নাই&lt;/p&gt;

&lt;p&gt;তাহলে state কি জিনিস । state হল data যা আমরা আমাদের ui এ ইউজ করি&lt;/p&gt;

&lt;p&gt;এখানে একটাই state আছে তা হল num=0 । কারণ এই একটাই data change হচ্ছে । এবং সেটার উপর base করে content এর data change হচ্ছে&lt;/p&gt;

&lt;p&gt;আমাদের html element এ আমাদের onekgolo state variable থাকতে পারে । react আমাদের এগোল niye কাজ করতে হেল্প করে ।&lt;br&gt;
react বলছে তুমি যদি আমার way তে কাজ কর তবে তোমাকে dom নিয়ে কোন কাজ করতে হবে না । dom react নিজে manage করে । আমরা যদি সময়মতো state change করে দিয়ে react dom manage করে দিবে&lt;/p&gt;

&lt;p&gt;lets see how react work for us&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
// &lt;span class="o"&gt;!&lt;/span&gt; create react element using jsx
const Increment &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    const reactState &lt;span class="o"&gt;=&lt;/span&gt; React.useState&lt;span class="o"&gt;()&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;div &lt;span class="nv"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"container"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;Increment /&amp;gt;, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

// &lt;span class="nb"&gt;let &lt;/span&gt;num &lt;span class="o"&gt;=&lt;/span&gt; 0&lt;span class="p"&gt;;&lt;/span&gt;
// const display &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"#display"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
// const button &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#button'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

// button.addEventListener&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'click'&lt;/span&gt;, &lt;span class="k"&gt;function&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
//     num++&lt;span class="p"&gt;;&lt;/span&gt;
//     display.textContent&lt;span class="o"&gt;=&lt;/span&gt;num
// &lt;span class="o"&gt;})&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;আমরা নিচের কোড কমেন্ট করে দেব র increment ফাংশন এর বেতরে একটা variable'নিব reactState নামে ।&lt;br&gt;
তাতে assign করব react এর building মেথড useState React.useState()&lt;/p&gt;

&lt;p&gt;এই useState() মেথড টা আমাদের increment ফাংশন এর state manage করে দিবে&lt;/p&gt;

&lt;p&gt;useState() এ bydefault একটা value দিয়ে দিতে হয় যেটা আমাদের react state এর default ভ্যালু হিসাবে initially set করে রাখে&lt;/p&gt;

&lt;p&gt;এখানে আমাদের state হল num variable টা । so আমরা সেটার ভ্যালু bydefault useState কে দিয়ে দিলাম 0 ।&lt;/p&gt;

&lt;p&gt;আমরা চাইলে এখানে useState()এ আমরা যেকোন ভ্যালু দিয়ে দিতে পারব । হতে পারে এটা array , object ,string or null or anything ।&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
// &lt;span class="o"&gt;!&lt;/span&gt; create react element using jsx
const Increment &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    const reactState &lt;span class="o"&gt;=&lt;/span&gt; React.useState&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    console.log&lt;span class="o"&gt;(&lt;/span&gt;reactState&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;div &lt;span class="nv"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"container"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;0&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;Increment /&amp;gt;, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;const reactState = React.useState(0);&lt;/p&gt;

&lt;p&gt;console.log(reactState);&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nKlTadai--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234164562-ef3b45db-e52a-4c4c-a864-cb1b2a1eeac1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nKlTadai--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234164562-ef3b45db-e52a-4c4c-a864-cb1b2a1eeac1.png" alt="Screenshot 2023-04-25 090531" width="378" height="205"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;useState() ফাংশটা আমাদের একটা array return করছে যার দুইটা element আছে&lt;br&gt;&lt;br&gt;
প্রথমটা হল আমাদের state এর value টা ।&lt;br&gt;
দিতীয়টা হল একটা function । এই ফাংশনটর কাজ হল যে parameter আমরা এই ফাংশন&lt;br&gt;
কে দিব সে ওই value টা আমাদের state এ update করে দিবে&lt;/p&gt;

&lt;p&gt;এর মানে হল এই function টা আমাদের state এর counter এর value টা আপডেট করে দিতে&lt;br&gt;
help করে&lt;/p&gt;
&lt;h2&gt;
  
  
  array destructure
&lt;/h2&gt;

&lt;p&gt;array destruring করে আমরা দুইটা জিনিস কে আলাদা করে দুইটা&lt;br&gt;
variable এর মদ্যে নিয়ে নিলাম&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
// &lt;span class="o"&gt;!&lt;/span&gt; create react element using jsx
const Increment &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    // const reactState &lt;span class="o"&gt;=&lt;/span&gt; React.useState&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    const &lt;span class="o"&gt;[&lt;/span&gt;counter,setCounter] &lt;span class="o"&gt;=&lt;/span&gt; React.useState&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;div &lt;span class="nv"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"container"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;{&lt;/span&gt;counter&lt;span class="o"&gt;}&lt;/span&gt;&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;Increment /&amp;gt;, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;array destruring করে আমরা দুইটা জিনিস কে আলাদা করে দুইটা&lt;br&gt;
variable এর মদ্যে নিয়ে নিলাম&lt;/p&gt;

&lt;p&gt;const [counter,setCounter] = React.useState(0);&lt;/p&gt;

&lt;p&gt;তাহলে কাউন্টার এর ভেতরে থাকছে initial value 0 আর এবং&lt;br&gt;
secondly setCounter variable টা হল একটা function । যেটা দিয়ে আমরা counter এর value টা change করতে পরি&lt;/p&gt;

&lt;p&gt;{counter} interpolation এর modde counter variable টা দিলে আমরা initial value 0 পেয়ে যাব&lt;/p&gt;
&lt;h2&gt;
  
  
  কিভাবে বাটন এ ক্লিক করলে counter update হবে
&lt;/h2&gt;

&lt;p&gt; Increment + &lt;br&gt;
বা&lt;br&gt;
Click me&lt;/p&gt;

&lt;p&gt;javascript এ amra onclick এভাবে লিখি&lt;/p&gt;

&lt;p&gt;jsx এ&lt;/p&gt;

&lt;p&gt;setCounter(counter + 1) }&amp;gt; Increment + &lt;/p&gt;

&lt;p&gt;এভাবে লিখতে হবে কারণ এটা jsx । onClick এর C capital hobe equel = dite hobe&lt;br&gt;
তারপর { } interpolation দিতে হবে&lt;br&gt;
setCounter(counter + 1 ) কল করতে হবে । কিন্ত এভাবে call করে দিলে runtime এ এটা কল হয়ে যাবে ।&lt;br&gt;
so আমরা চাচ্ছি যখন বাটন এ ক্লিক করবে তখনই fire হবে । তার জন্যে ()=&amp;gt; arrow function এর মদ্যে দিতে হবে টা setCounter(counter + 1) এই ফাংশন কে রিটার্ন করবে । যাতে call না হয়ে যায়&lt;/p&gt;

&lt;p&gt;setCounter(counter + 1) }&amp;gt; Increment + &lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
// &lt;span class="o"&gt;!&lt;/span&gt; create react element using jsx
const Increment &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    // const reactState &lt;span class="o"&gt;=&lt;/span&gt; React.useState&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    const &lt;span class="o"&gt;[&lt;/span&gt;counter,setCounter] &lt;span class="o"&gt;=&lt;/span&gt; React.useState&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;div &lt;span class="nv"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"container"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;{&lt;/span&gt;counter&lt;span class="o"&gt;}&lt;/span&gt;&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt; &lt;span class="nv"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;={()=&amp;gt;&lt;/span&gt;setCounter&lt;span class="o"&gt;(&lt;/span&gt;counter + 1&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;}&amp;gt;&lt;/span&gt; Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;Increment /&amp;gt;, domContainer&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c-vPWhBb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234180390-578193b6-691e-45c0-8dcd-f9ff67e8040e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c-vPWhBb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234180390-578193b6-691e-45c0-8dcd-f9ff67e8040e.png" alt="Screenshot 2023-04-25 111308" width="800" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  তাহলে react use করে কি সবিধা টা হল ?
&lt;/h2&gt;

&lt;p&gt;প্রথম সুবিধাটা হল আমাদের কে manually dom এর কোন element দরতে হবে না যেমন -&lt;br&gt;
const display = document.querySelector("#display");&lt;br&gt;
display.textContent=num&lt;/p&gt;

&lt;p&gt;এভাবে করতে হল না&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let num = 0;
const display = document.querySelector("#display");
const button = document.querySelector('#button');

button.addEventListener('click', function () {
    num++;
    display.textContent=num
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;এটা করা লাগবে না&lt;/p&gt;

&lt;p&gt;প্রথম সুবিধাটা হল আমাদের কে manually dom এর কোন element দরতে হবে না আর state আর counter এর&lt;br&gt;
value change হলে manually dom এ render করা লাগলো না । আমাদের old js file এ বারবার manually dom&lt;br&gt;
update করা লাগছে । react এ আমরা ভ্যালু টা change করছি reactdom নিজে নিজে তা dom এ আপডেট করে দিচ্ছে&lt;br&gt;
। মনে reactive সে । এটা হল first benifit&lt;/p&gt;

&lt;p&gt;react এর main beauty টা হল - আমরা যদি চাই এই কাউন্টার একটার জায়গায় অনেকগোল লাগবে তাহলে component টা কয়েকবার লিখলে চলবে । যেমন --&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ReactDOM.render(
    &amp;lt;div&amp;gt;
    &amp;lt;Increment /&amp;gt;
    &amp;lt;Increment /&amp;gt;
    &amp;lt;Increment /&amp;gt;
    &amp;lt;/div&amp;gt;
   ,
    domContainer
   );
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;const domContainer &lt;span class="o"&gt;=&lt;/span&gt; document.querySelector&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'#root'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
// &lt;span class="o"&gt;!&lt;/span&gt; create react element using jsx
const Increment &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    // const reactState &lt;span class="o"&gt;=&lt;/span&gt; React.useState&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    const &lt;span class="o"&gt;[&lt;/span&gt;counter,setCounter] &lt;span class="o"&gt;=&lt;/span&gt; React.useState&lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&amp;lt;div &lt;span class="nv"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"container"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &amp;lt;h1 &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"display"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;{&lt;/span&gt;counter&lt;span class="o"&gt;}&lt;/span&gt;&amp;lt;/h1&amp;gt;
        &amp;lt;div&amp;gt;
            &amp;lt;button &lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"button"&lt;/span&gt; &lt;span class="nv"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;={()=&amp;gt;&lt;/span&gt;setCounter&lt;span class="o"&gt;(&lt;/span&gt;counter + 1&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;}&amp;gt;&lt;/span&gt; Increment + &amp;lt;/button&amp;gt;
        &amp;lt;/div&amp;gt;
    &amp;lt;/div&amp;gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
ReactDOM.render&lt;span class="o"&gt;(&lt;/span&gt;
    &amp;lt;div&amp;gt;
    &amp;lt;Increment /&amp;gt;
    &amp;lt;Increment /&amp;gt;
    &amp;lt;Increment /&amp;gt;
    &amp;lt;/div&amp;gt;
   ,
    domContainer
   &lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3LFIpJlI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234360033-5a288545-0e29-4a85-b6cd-d2fbb4510c51.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3LFIpJlI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://user-images.githubusercontent.com/48369328/234360033-5a288545-0e29-4a85-b6cd-d2fbb4510c51.png" alt="Screenshot 2023-04-25 234816" width="750" height="671"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;টিকমত কাজ করছে আর every state টিক মতো manage হচ্ছে । এক এক জায়গায় কাউন্টার এর ভ্যালু এক এক রকম&lt;br&gt;
আমাদের কোন কোড dublicate করা লাগলোনা । তারমানে আমরা পুরো functionality সহ self contain block of component বানাতে পারছি । যার দনিয়া সম্পর্ন আলাদা তাখছে আর differnt দনিয়া create করতে পারছে component call করে। মনে আমরা কম্পোনেন্ট কে reuse করতে পারছি    । তাই react কে component library বলা হয়&lt;/p&gt;

&lt;p&gt;একটা react application এ multiple component থাকবে আর সবাই self contain functionality নিয়ে বসে থাকবে । একটা react component কে আমরা separate appliction ও বলতে পরি। আমরা একবারে component টা&lt;br&gt;
লিখব আর যতবার প্রয়োজন আমরা component টা কে আমাদের application এ reuse করব&lt;/p&gt;

&lt;p&gt;component গলো একবারে আলাদা হওয়ার কারণে বড় team এ separate developer separate component নিয়ে&lt;br&gt;
কাজ করতে পারবে । finally egolo কে জোড়া লাগিয়ে একটা বিশাল web application বানান possible হয়।&lt;br&gt;
এটাই react js এর beauty&lt;/p&gt;

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