Nur Amin Sifat
5 min readJan 26, 2023

--

পাইথন বা অন্য ল্যাংগুয়েজ দিয়ে ওয়েভ ফ্রেমওয়ার্ক শেখার সহজ টিপস

Photo by Christina Morillo: https://www.pexels.com/photo/python-book-1181671/

পাইথন বর্তমানে অনেক জনপ্রিয় একটা প্রোগ্রামিং ল্যাংগুয়েজ! বিশেষ করে মেশিন লার্নিং, ডাটা সাইন্সের শিক্ষার্থীরা এই ল্যাংগুয়েজ প্রচুর ব্যবহার করছে। তবে ম্যাক্সিমাম ছেলেমেয়ে একটা বিষয় বুঝতে পারে না যে মেশিন লার্নিং ও ডাটা সাইন্সের পাশাপাশি পাইথন দিয়ে কিভাবে খুব সহজে ওয়েভ ডেভেলপমেন্ট শেখা যায়, যার ফলশ্রুতিতে অনেক এটাকে কিছুটা দূরহ মনে করে। কিন্তু তারা একটা বিষয় জেনে অবাক হবে, বর্তমানে প্রচলিত যতগুলো ওয়েভ ফ্রেমওয়ার্ক আছে পৃথিবীতে, সবগুলোর উদ্দেশ্য ও ফিলোসোফি প্রায় একই ধরণের, বিশেষ কিছু বিশেষত্ব ছাড়া। ফ্রেমওয়ার্ক গুলোর প্রধান উদ্দেশ্য হচ্ছে ওয়েভ এপ্লিকেশন ডেভেলপমেন্ট করার সময় Structured, Reusability & Modularity কে বাড়িয়ে দেওয়া। যাতে ডেভেলপাররা খুব সহজে তাদের বিজনেস লজিকে দ্রুত ফোকাস রাখতে পারে, অযথা যে বিষয় গুলো বারবার আসে সেগুলো নিজে থেকে ডেভেলপ করতে না হয়, যার ফলশ্রুতিতে তারা খুব দ্রুত একটা ওয়েভ এপ্লিকেশন ডেভেলপ করতে পারে। যেমন যারা ইটের ভাটায় শ্রমিকদের কাজ করতে দেখেছেন তারা একটা বিষয় লক্ষ্য করলে দেখবেন ইট বানানোর একটা নির্দিষ্ট ছাচ আছে, সেটা ব্যবহার করে তারা ইটের সঠিক ষ্ট্রাকচার বজায় রাখে, এখানে শ্রমিকদের কিন্ত বার বার নিজেদের ছাচ বানাতে হয় না বা ভাবতে হয় না এটা নিয়ে। ডেভেলপারদের ক্ষেত্রে ঠিক তাই যত ধরণের লো-লেভেল বিষয় আছে যেমন রিকুয়েষ্ট, রেসপন্স, সেশন হ্যান্ডেল, ডাটাবেইজ কানেকশন ইত্যাদি বিষয় নিয়ে বার বার ভাবতে হয় না। আর এই ভাবনা থেকেই ফ্রেমওয়ার্ক গুলোর আবির্ভাব। তাই ফ্রেমওয়ার্ক গুলোর তৈরির পেছনে কিছু গুরুত্বপূর্ণ ফিলোসোফি কাজ করে যেগুলো ফ্রেমওয়ার্ক শেখার আগে আমাদের জানা দরকার।

যেসব ফিলোসোফি নিয়ে ওয়েভ ফ্রেমওয়ার্ক গুলো তৈরি হয়ে থাকে সেগুলো হচ্ছে -

  • Convention Over Configuration: যে সমস্ত কাজ গুলো প্রাথমিকভাবে আমাদের বার বার করতে হয় সেগুলো না করা। ওগুলোর জন্য এমন কিছু কনভেনশন ফিক্স করা যাতে আমাদের বার বার কনফিগারেশন না করতে হয়। এই প্রিন্সিপালের প্রধান উদ্দেশ্য হচ্ছে এমন কিছু ডিফল্ট বৈশিষ্ট্য ফ্রেমওয়ার্কের থাকা উচিত যেগুলো ম্যানুয়ালি ডেভেলপার হ্যান্ডেল না করে ডেভেলপার কাজ শুরু করতে পারে।
  • Don’t Repeat Yourself (DRY): এই প্রিন্সিপালের উদ্দেশ্য হচ্ছে সেম কোড যাতে বার বার রিপিট না হয়, ফ্রেমওয়ার্কের এই কাজটা খুব সুন্দর ভাবে হ্যান্ডেল করে। অনেক বড় প্রজেক্টের ক্ষেত্রে কোন ধরণের ফ্রেমওয়ার্ক ব্যবহার যদি না করা হয়, সেখানে DRY অনুসন্ধান করা খুবই কঠিন হয়ে যায়। সেক্ষেত্রে এপ্লিকেশনটি বিশৃঙ্খল হওয়ার সম্ভবনা বেশি থাকে। সেজন্য প্রত্যেক ফ্রেমওয়ার্ক DRY ফলো করে।
  • Separation Of Concern: এই প্রিন্সিপাল আমাদের ওয়েভ এপ্লিকেশনকে বিভিন্ন অংশে আলাদা করে, যেমন প্রেজেন্টেশন লজিক, বিজনেস লজিক এবং ডাটা এক্সেস লজিক ইত্যাদি। যেটা আমাদের ফ্রেমওয়ার্কে আলাদা আলাদা কম্পোনেন্টে বিভাজিত করে, যা হ্যান্ডেল করা এবং ডিভাগ করা অনেক সহজ এবং সুন্দর হয়। কাজ গুলোকে আলাদা করার মাধমে Readability বাড়ানো হয় যাতে অন্য কেউ আপনার কোড সহজে বুঝতে পারে। বড় প্রজেক্টের ক্ষেত্রে অনেক মডিউল নিয়ে কাজ করা হয়, এক্ষেত্রে এক জনের কোডে অন্যজনের কাজ করাটা স্বাভাবিক ব্যাপার, যাতে অন্য কেউ খুব সহজে সেটা বুঝতে পারে সেই জন্য এই প্রিন্সিপাল খুবই গুরুত্ব বহন করে।
  • Modularity: এই প্রিন্সিপালের উদ্দেশ্য হচ্ছে সব ফ্রেমওয়ার্কে ছোট, পুনঃব্যবহার যোগ্য এবং স্বাধীন মডিউল থাকা। যেমন আপনি রাউটিং হ্যান্ডেল করবেন, এক্ষেত্রে বার বার যদি রাউটিং কনফিগারেশন করেন যা কিনা DRY বা উপরের অনেক প্রিন্সিপাল ফলো করা হবে না। এই জন্য প্রত্যেকটা ফ্রেমওয়ার্কের মডিউলারিটি ফলো করে।
  • Performance: একটা ফ্রেমওয়ার্ক অবশ্যই ভালো পারফরম্যান্সের হওয়া উচিত। আর পারফরম্যান্স গুলো নির্ভর করবে উপরে উল্লেখিত প্রিন্সিপাল গুলো কত সুন্দর ভাবে ব্যবহার করা হয়েছে। তাছাড়া ল্যাংগুয়েজগত কিছু বিষয় এটার উপর খুবই গুরুত্ব বহন করে।

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

কম্পোনেন্ট গুলো নিম্নরূপ -

  • Routing: রাউটিং খুবই কমন একটা কম্পোনেন্ট যা সব ধরনের ওয়েভ এপ্লিকেশনের জন্য পাবেন। আপনি কোন URLs এর কোন একশনে কাজ করতে চান, সম্পূর্ণভাবে হ্যান্ডেল করে এটা। যখন আপনি কোন ওয়েভ সাইটে লগিন করতে চান, ডাটা দিয়ে ফর্ম সাবমিট করেন সেক্ষেত্রে আপনার ওই রাউটিংয়ের কাজ হচ্ছে আপনার ডাটা দিয়ে ওই ওয়েভ সাইটে লগিন করানো। এরকম আরো অনেক একশন নিয়ে রাউটিং কাজ করে থাকে।
  • Templates: আপনি কিভাবে ওয়েভ এপ্লিকেশনকে দেখেন, বিভিন্ন ফ্রেন্টেন্ড বিষয় গুলো এটা হ্যান্ডেল করে।
  • Database Integration: ডাটাবেইজের সাথে যাবতীয় কাজ গুলো এই কম্পোনেন্ট হ্যান্ডেল করে। একটা কমন প্যাটার্ন ফলো করে তারা ডাটাবেইজ কনফিগারেশন করে থাকে।
  • Form handling: এই কম্পোনেন্ট ফর্ম রিলেটেড যাবতীয় ভেলিডেশন, ইরর আইডেন্টিফিকেশন ও ফর্ম কিভাবে ভিউ করাতে হবে তা হ্যান্ডেল করে।
  • Authentication & Authorization: এই কম্পোনেন্ট এপ্লিকেশনের কোন পার্ট কোন ইউজার কিভাবে এক্সেস নিবে তা হ্যান্ডেল করে। যেমন যদি কোন একটা ইউজারের কোন একটা URLতে এক্সেস না থাকে, তাহলে সে URL টিতে যেতে পারবে না।
  • Security: সিকিউরিটি হ্যান্ডেল খুবই গুরুত্বপূর্ণ একটা অংশ। ওয়েভ এপ্লিকেশনের বিভিন্নধরনের এটাক যেমন XSS, CSRF & SQL injection থেকে বাঁচতে ওয়েভ এপ্লিকেশন গুলো কিছু বিল্ড-ইন প্রটেকশন সিষ্টেম সরবারাহ করে, আর ডেভেলপাররা শুধু সেটা ব্যবহার করে থাকে।
  • ORM(Object Relational Mapping): এই কম্পোনেন্ট ডেভেলপারদের স্ক্র‍্যাচ থেকে SQL না লিখে, অব্জেক্ট ওয়েতে কুয়েরি লিখতে সাহায্য করে ।
  • Caching: ক্যাশিং কম্পোনেন্ট ডাটা স্টোর এবং সেই ডাটা গুলো খুব সহজে ডাটাবেইজে কোনরকম কুইয়েরি ছাড়া খুঁজে বের করতে সাহায্য করে থাকে। তো ক্যাশিং কিভাবে ফ্রেমওয়ার্কের সাথে কাজ করে সেটা ডেভেলপার মাথায় রাখলেই চলে।
  • Internationalization: এটা ডেভেলপারদের পৃথিবীর বিভিন্ন ল্যাঙ্গুয়েজ নিয়ে কাজ করতে সহায়তা করে।
  • Logging: এই কম্পোনেন্টের মাধ্যমে ডেভেলপার ওয়েভ এপ্লিকেশনের বিভিন্ন ধরনের ইনফরমেশন যেমন এক্সিকিউসন, ইররর মেসেজ, এপ্লিকেশনের পারফরমান্স এবং দিবাগিং এর সকল তথ্য দেখতে পারে।

এখন আমরা বুঝার চেষ্টা করবো উপরের যাবতীয় বিষয়গুলো নিয়ে ওয়েভ এপ্লিকেশন কিভাবে কাজ করে অর্থাৎ আমরা যখন ওয়েভ এপ্লিকেশনে ব্রাউজ করি কিভাবে সেটা কাজ করে।

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

তারপর সেই রেস্পন্স ডাটাকে এপ্লিকেশন সার্ভার আবার ক্লাইন্ট তথা ব্রাউজারের কাছে ফেরত দিয়ে দেয় আমরা যেটা ব্রাউজারে দেখতে পারি। এটাই হচ্ছে একটা ওয়েভ ফ্রেমওয়ার্কের কাজ।

আর এখানে যে একটা রিকুয়েষ্ট, রেসপন্স এবং ডাটা প্রেসেসিংয়ের ঘটনা ঘটেছে উপরের সব কম্পোনেট যেমন Routing, Templating, ORM ইত্যাদি মাধ্যমে এই কাজ গুলো হয়ে থাকে।

তো আলোচনা থেকে আমরা একটা শেখার ষ্টেপ বের করতে পারি, যেভাবে ফ্রেমওয়ার্ক শিখতে পারি, সেটা হচ্ছে -

১. রাউটিং বুঝতে হবে।

২. কিভাবে, কাকে, কোন রাউটিংয়ের এক্সেস দেওয়া যায়, সেটা জানতে হবে, বুঝতে হবে।

৩. রাউটিংয়ের পর যে ফাংশনে নিচ্ছে সেখানে কিভাবে ডাটাবেইজ CRUD অপারেশন পারফর্ম করে ক্লাইন্টের কাছে পাঠানো যায় বুঝতে হবে।

এই তিনটা লাইনের মাধ্যমে শিখে ফেলতে পারেন প্রত্যেকটা ফ্রেমওয়ার্কের ব্যাসিক।

উপরে যে বিষয় গুলো নিয়ে আলোচনা করা হয়েছে প্রত্যকেটা কনসেপ্ট পৃথিবীর সব ল্যাঙ্গুয়েজের সব ফ্রেমওয়ার্কের জন্য প্রযোজ্য। তো এখন যে বিষয়টা মাথায় রাখা উচিত সেটা হচ্ছে প্রথমে পাইথন ভাল ভাবে শেখা, যেহেতু আমরা পাইথন দিয়ে ওয়েভ শিখতে চাচ্ছি। এটা স্বাভাবিক যে একেক জনের শেখার ধরণ একেক রকম হবে, তবে আমার সাজেশন থাকবে ব্যাসিক ল্যাঙ্গুয়েজ শিখে তারপর হ্যাকারর‍্যাংকে পাইথন রিলেটেড প্রায় সব সমস্যার সমাধান করা। তারপর ব্যাসিক এল্গোরিদম এবং ডাটা ষ্ট্রাকচারের মাধ্যমে কিছু সমস্যার সমাধান করা। এতে কি হয় একজন ডেভেলপার চিন্তার স্বাধীনতা পাই, ল্যাঙ্গুয়েজের উপর দক্ষতা বাড়াতে পারে । যদি কেউ এগুলো ফলো না করে, সেক্ষেত্রে দেখা যায় ব্যাসিক প্রোগ্রামিং এ অনেক দুর্বলতা কাজ করে এবং ব্যাসিক সমস্যার এনালাইসিস করার সক্ষমতা তৈরি হয় না তাদের। যেটা ভবিষ্যতে অনেক ধরণের সমস্যার সৃষ্টি করতে পারে।

--

--

Nur Amin Sifat

I'm a Associate Software Engineer at Brain Station 23 and Data Security learner as well.