Module‌‌‌‌ ‌‌‌‌৩৭ ‌‌‌‌এ‌‌‌‌ ‌‌‌‌আমরা‌‌‌‌ ‌‌‌‌যাকিছু‌‌‌‌ ‌‌‌‌শিখেছি‌‌‌‌ ‌



Module‌‌‌‌ ‌‌‌‌৩৭ ‌‌‌‌এ‌‌‌‌ ‌‌‌‌আমরা‌‌‌‌ ‌‌‌‌যাকিছু‌‌‌‌ ‌‌‌‌শিখেছি‌‌‌‌ ‌

How to JavaScript and Browser works

 

 

  • ইন্টারনেটে সবকিছুরি এক একটা নিজেস্ব Unique address আছে যাকে IP address বলে

  • তুমি তোমার নিজের আইপি অ্যাড্রেস দেখতে চাইলে গুগলে সার্চ কর what is my ip address (IPv6 = internet protocol version number 6)

  • অনেকেগুলো সার্ভার একসাথে থাকলে তাকে ডাটা ছেন্টারও বলে

  • DOM (Document Object Model HTML ফাইলে একটা ট্রি এর মত করে কাজ করে )

 

 

  • ঠিক একই কাজ করে সিএসএস এর ক্ষেত্রেও

 

  • এই DOM এর tree আর CSS এর স্টাইল Tree মিলে তৈরি হয় Render tree . তাহলে কি এই Render ? Render সহজ ভাষায় বলতে গেলে বলা জেতে পারে কোণ একটা কিছু দেখানো বা final output তাকে দেখানো । জাভা ভিডিও এডিট করে Animetion এর কাজ করে তারা কাজ শেষে তার কাজটা দেখা জন্য কিন্তু render দেই । তারপর  সিএসএস এর মাধ্যমে paint করে ।  

 

  • তাহলে সব মিলিয়ে আসলে কি হচ্ছে সেটা একটু বোঝার চেষ্টা করি

 

  • আমরা ডিসপ্লেটে যা দেখতে পাই সেটাকে User Interface বলে

  • জাভাসচ্রিপ্ট এর V8 engile C++ দিয়ে তৈরি করা । (JS browser এ চলে V8 engine দিয়ে )

 

  1. খেয়াল কর Javascript কে যে axicute করে আউটপুট দিবে সেটা লেখা হয়েছে C++ দিয়ে । এর কিছু কারণ আছে C++ metchine laguage এ খুব তারাতারি কনভার্ট করতে পারে । V8 শুধু কে কোড এ মধ্যেই exicute করে তেমন না এটা Node JS এর মধ্যেও এক্সিকিঊট করতে পার ।

  2. এখন প্রশ্ন হচ্ছে V8 Engine কিভাবে কাজ করে ?

 

 

  1. প্রথমে JS source Code পায় তার পর সেটাকে Parse করে । তারপর Tree structure এ সাজায় । তার পর interpreter Ignition করে মানে কোড গুলো রান করে । interpreter Ignition  এর কারণ হচ্ছে JS একটা interpreted ল্যাঙ্গুয়েজ সাথে interpreted  নিজে নিজে পরে পরে exicute করে ফেলতে পারে । আর একটা আছে Compiled .মানে রান্না করে খাওয়ায়ে দিতে হয় । অ্যাপেল আর লাউ খাওয়ার মত আর কি ?

  2. অ্যাপেল যেমন কামর দিয়েই খেয়ে ফেলা যায় কিন্তু লাউ কে কামর ফিয়ে খাওয়া যায় ? অবশ্যয় না । লাউকে রান্না করে তারপর খেতে হয় । তেমনি compiled language এর বেলায় সব কিছু লাইন লাইন লিখে দিতে হয় নয়ত সে বুঝতে পারে না

  3. এর মধ্যেই জাভাসচ্রিপ্ট খুব তারাতারি exicite হওয়ার জন্য তাদের নিজেস্ব একটা পদ্ধতি ব্যাবহার করে যার নাম Just in time compailer (JIT) . তারপর bytecode এ কনভার্ট করে । bytecode মানে অনেক আডভান্স ল্যাঙ্গুয়েজ আছে যেগুলাকে আমাদের কম্পিউটার বুঝতে পারে না । বুঝতে পারার জন্য যে কাজগুল ভেতরে ভেতরে করে থাকে সেটাই মুলত bytecode এর কাজ ।

  4. আরও কিছু কাজ করে যেটা মধ্যে একটা TurboFan অর্থাৎ কোড গুলোকে optimize করে । ধরতে পার পরিচ্ছন্ন কর্মী । সেগুলোকে আবার garbage collection ও বলে

 

  • setTimeOut() এর কাজ কি ? ব্যাবহার করে দেখাও । (API মুলত setTimeOut() এর মতই কাজ করে । একদিকে API লোড হয় অন্যদিকে সহজ সরল কাজ গুলো  করে ফেলে ) setTimeOut()  ও API asynchronous, synchronous না । console.log() synchronous ।  

  • আমরা setTimeOut() এর ব্যাবহার দেখেছি । এর একটা খালাত ভাই আছে যার নাম setInterval() । setInterval() এর কাজ হল , আগে setTimeOut() এর কাজটা কিভাবে করে সেটা বুঝি । setTimeOut() একবার আউটপুট দিয়ে বন্ধ হয়ে যায় । কিন্তু setInterval() সেটা করে না সে continually চলতে থাকে ।

 

console.log("first");

setInterval(() => {

  console.log("i am from set interval");

}, 1000);

console.log("second");

  

  • setInterval() চলতে লাগলে চলতেই থাকে । একে বন্ধ করার উপায় কি ? একটা উপাই আছে ।  clearInterval করে দিতে হবে ।setInterval() এ একটা আইডি পাওয়া যাবে যাকে clearInterval করে দিলেই থেকে যাবে। (

 

console.log("first");

let counter = 0;

const intervalID = setInterval(() => {

  counter++;

  console.log(counter);

  console.log(counter++); // এটা করলে কি হচ্ছে scope এর বাইরের counter এর মান ০ নিয়ে console এ দেখাচ্ছে তার পর এক এক করে বাড়াচ্ছে । সেটা না করে আগে মান বাড়াবে তারপর আউটপুট দিবে এমন দেখতে চাইলে নিচে pre-incremental ফলো কর

  console.log(++counter);

  if (counter > 15) {

    clearInterval(intervalID); }

}, 1000);

console.log("second");

 

  •  

 

All module link

আর আমার github এ যাইতে চাইলে এই লিঙ্কে ক্লিক করুন

About

Md: Rashedul Islam Shihab

Writer of this note

Batch4

Social accounts

 

 

 



 

 

 

Previous Post Next Post