...

Nuhil Mehdy

Polyglot Programmer, White Hat Hacker, AI Enthusiast by Choice!

নোড.জেএস (Node.js) কি এবং কিভাবে কাজ করে

ভূমিকা

ব্যাক এন্ড ডেভেলপমেন্টে Node.js এর উপর ভিত্তি করে বেশ কিছু ওয়েব ফ্রেমওয়ার্ক এর সফল ব্যবহার, প্রায় সব রকম ইউটিলিটি টুল হিসেবে রেডিমেড প্যাকেজের সহজ লভ্যতা এবং ফ্রন্ট এন্ডে অনেক গুলো ভালো ভালো ফ্রেমওয়ার্কের সাম্প্রতিক উন্নতি বেশ ভালো মতই ব্যাকএন্ড, ফ্রন্ট এন্ড বা হাইব্রিড অ্যাপ ডেভেলপমেন্টে জাভাস্ক্রিপ্ট এর প্রভাব বুঝিয়ে দিচ্ছে। আমি এই রাস্তায় একদম নতুন। আমার মনে হয়েছে যেহেতু এই স্ট্যাকে কাজ করতে গেলে সব খানেই জাভাস্ক্রিপ্ট লাগছে তাই আসলেই জাভাস্ক্রিপ্ট কিভাবে কাজ করে, বা এই টুল গুলোর কাজ করার ধরনটাই বা কেমন সেটা জানা খুবি জরুরী। নাহলে সঠিক ভাবে টুল গুলোর ইফিসিয়েন্সি ইউটিলাইজ করা হবে না অথবা উল্টো ভুল ভাবে ব্যবহার করা হয়ে যেতে পারে। তাই আমি গত কয়েক সপ্তাহের লার্নিং রিসোর্সকে একটা জায়গায় গুছিয়ে লিখেছি।

জাভাস্ক্রিপ্ট সম্বন্ধে কিছু ভুল ধারনা

সব ওয়েব ব্রাউজারের সাথে Javascript ইন্টিগ্রেটেড অবস্থায় থাকে। তাই, আমরা কিছু ফিচার দেখতে দেখতে অভ্যস্ত যেগুলোকে Javascript এর অংশ বলে মনে হয় যেমন - DOM Tree, setTimeout ফাংশন, AJAX রিকোয়েস্ট ইত্যাদি। কিন্তু আসলে জাভাস্ক্রিপ্ট যে এনভ্যায়র্নমেন্টে রান করছে সেখান থেকেই এগুলো প্রোভাইড করা হয়। এ ক্ষেত্রে ব্রাউজার এই API গুলো প্রোভাইড করে থাকে এবং window, document বা এরকম গ্লোবাল অবজেক্ট গুলোও ব্রাউজারই ইনিসিয়ালাইজ করে থাকে। তো আমরা যদি, ব্রাউজারের ফিচার গুলো বাদ দিয়ে Javascript কে চিন্তা করি তাহলেও এই ল্যাঙ্গুয়েজটির নিচের বৈশিষ্ট্য গুলো থেকেই যায় -

  • ফার্স্ট ক্লাস সিটিজেন হিসেবে ফাংশনকে ব্যবহার করে (ফাংশনকে আর্গুমেন্ট হিসেবে পাঠানো যায়, এক ফাংশনের মধ্যে থেকে আরেকটি ফাংশনকে রিটার্নও করা যায় ইত্যাদি
  • ইভেন্ট মডেল ব্যবহার করে (এর মাধ্যমে ইভেন্ট ড্রাইভেন প্রোগ্রামিং করা যায়, পক্ষান্তরে যার সাহায্যেই কিনা asynchronous অপারেশন করা সম্ভব হয়)

Node.js কি?

অফিসিয়াল সাইটের সংজ্ঞা অনুযায়ী - “It is a JavaScript runtime built on Chrome’s V8 JavaScript engine. It uses an event-driven, non-blocking I/O model that makes it lightweight and efficient” অর্থাৎ - ক্রোমের V8 জাভাস্ক্রিপ্ট ইঞ্জিনের উপর তৈরি একটি জাভাস্ক্রিপ্ট রানটাইম যা কিনা ইভেন্ট-ড্রাইভেন ইনপুট/আউটপুট মডেল ব্যবহার করে এবং এর কারনে এটি অনেক ইফিসিয়েন্ট। উইকিপিডিয়াতে বলা - “Node.js is an open-source, cross-platform JavaScript run-time environment for executing JavaScript code server-side.” এটি একটি ওপেন সোর্স, ক্রস প্ল্যাটফর্ম জাভাস্ক্রিপ্ট রানটাইম এনভ্যায়র্নমেন্ট যার মাধ্যমে সার্ভার সাইডে জাভাস্ক্রিপ্ট কোড এক্সিকউট করা যায়” আমার যে সংজ্ঞাটি পছন্দ সেটা হচ্ছে - এটি একটি ওপেন সোর্স, কোর্স প্ল্যাটফর্ম, ইভেন্ট ড্রাইভেন রানটাইম এনভ্যায়র্নমেন্ট যার মাধ্যমে জাভাস্ক্রিপ্ট ব্যবহার করে এবং নন-ব্লকিং ইনপুট/আউটপুট মডেল ফলো করে সার্ভার সাইড, হাইব্রিড বা নেটওয়ার্কিং অ্যাপ্লিকেশন ডেভেলপ করা যায় :)

Read more →

Virtual Environment for Python Workspace Part 33 venv

In the earlier two posts of this series, I discussed about virtualenv and conda and their usage along with some examples. I this post I am going to introduce you guys with another package and environment manager called venv which comes with standard Python3.X by default. So, nothing to worry about its installation. Virtual Environment for Python Workspace – Part 1⁄3 – virtualenv Virtual Environment for Python Workspace – Part 2⁄3 – conda Read more →

Virtual Environment for Python Workspace Part 23 conda

Hope you already got the idea behind the necessity of virtual environment in Python ecosystem in my previous post. So, in this post I will directly go into the detail of conda and its usage. What is conda? Just like virtualenv , this is also a package, dependency & environment management tool. Unlike virtualenv , conda can work not only with Python but also with R, Javascript, Ruby, Lua, Scala etc. Read more →

Virtual Environment for Python Workspace Part 13 Virtualenv

If you are planning to work or have been working in Python stack for web development, machine learning, data analysis etc. then you must have already come through the term “virtual environment”. In this article I will try to explain what it is, why its needed and how to acheive this workaround in three different ways. I will give you a basic overview of creating and managing Python virtual environment with virtualenv , venv and conda (with miniconda). Read more →

ম্যাক এর জন্য ডেভেলপার বা প্রো-ইউজারদের প্রয়োজনীয় ৩০টি অ্যাপ সাজেশন

  1. Xcode: যারা iOS, watchOS বা macOS এর জন্য অ্যাপ্লিকেশন ডেভেলপ করতে চান তাদের জন্য একান্ত প্রয়োজনীয় একটি IDE যার সাথে বিল্ট ইন আছে ইমুলেটর গুলোও। ম্যাক ইউজাররা ফ্রি তেই ডাউনলোড করতে পারবেন।
  2. chrome বর্তমান ওয়েব দুনিয়ায়, সব ব্রাউজারের ব্যবহার জরিপ অনুযায়ী শতকরা ৭০ ভাগেরও বেশি ব্যবহৃত হয় গুগলের তৈরি এই ব্রাউজারটি। বিশাল এক্সটেনশন এবং অ্যাপ মার্কেটপ্লেস এই ব্রাউজারকে করেছে আরও সমৃদ্ধ। এই ব্রাউজারে যেমন ক্লায়েন্ট সাইড ডিবাগিং, ইন্সপেকশন টুল বিল্ট আছে তেমনি এর জন্য এক্সটেনশন বা প্লাগিন তৈরি করাও বেশ সহজ। সবার জন্য ফ্রি।
Read more →