POST CATEGORY : Series
Django Life – Session 2 (Bangla Screencast)
The Video is available in HD
Django Life – Session 1 (Bangla Screencast)
The Video is available in HD
JavaScript Fundamentals – Inheritance & Prototype – Bangla Screencast
Video is available on HD
JavaScript Fundamentals – Objects & Prototypes – Bangla Screencast
Video is available in HD
JavaScript Fundamentals – Functions & Closures – Bangla Screencast
Video is available in HD
JavaScript Fundamentals – Session -1: Bangla Screencast
Video is available in HD
Additional Notes
গ্লোবাল স্কোপ, লোকাল স্কোপ, var কিওয়ার্ড
ভিডিওটির ভ্যারিয়েবল নিয়ে আলোচনায় কিছু কনফিউশান তৈরি হতে পারে, তাই এ ব্যাপারে কিছুটা আলোকপাত করা জরুরী । var কিওয়ার্ডটি সব সময় বর্তমান স্কোপে ভ্যারিয়েবল তৈরি করে । এটি ব্যবহার না করে ভ্যারিয়েবল তৈরি করা হলে সেটি আউটার স্কোপে (বা গ্লোবাল স্কোপে) তৈরি হয় । গ্লোবাল স্কোপে তাই এই কিওয়ার্ডটির ব্যবহার কোন প্রভাব ফেলে না কারন গ্লোবাল স্কোপে var ব্যবহার করলেও সেটি গ্লোবাল স্কোপেই তৈরি হবে (কারন var বর্তমান স্কোপে প্রভাব ফেলে এবং তখন বর্তমান স্কোপ হবে গ্লোবাল স্কোপ) ।
একটি উদাহরণ দেখে নেই –
1 2 3 4 5 6 7 8 9 |
var globalWithVarKeyword = "var keyword in global scope" function scopeTest() { console.log(globalWithVarKeyword) globalVar = "global" // create a global var from function scope by omitting var keyword } scopeTest(); console.log(globalVar); |
এখানে globalWithVarKeyword একটি গ্লোবাল ভ্যারিয়েবল কারন এটা গ্লোবাল স্কোপে var কিওয়ার্ড দিয়ে তৈরি । অন্যদিকে globalVar টি ফাংশানের মধ্য থেকেও গ্লোবাল স্কোপে তৈরি হয়েছে কারন আমরা var ব্যবহার করিনি ।
বাংলায় জ্যাঙ্গো – ইনস্টলেশন
কি কি লাগবে?
- পাইথন (আমরা Python 2.7.4 ব্যবহার করছি, Python 3 ব্যবহার করবো না)
- টেক্সট এডিটর বা আইডিই (আমি Sublime Text 2 রিকমেন্ড করি)
- ডাটাবেইজ সার্ভার (MySQL হলেই চলবে)
- pip (পাইথন প্যাকেজ ইন্সটল করার জন্য এটি লাগবে । ইনস্টলেশন গাইড )
প্রথম ধাপ – জ্যাঙ্গো ইনস্টল করা
1 |
pip install Django |
এই কমান্ডটি জ্যাঙ্গো ফ্রেমওয়ার্ক এবং তার প্রয়োজনীয় টুলগুলো ইনস্টল করে নিবে ।
দ্বিতীয় ধাপ – মাইসিকুয়েল বাইন্ডিং ইনস্টল করা
যেহেতু আমরা জ্যাঙ্গোর সাথে মাইসিকুয়েল ব্যবহার করবো সেহেতু আমাদের পাইথনের জন্য মাইসিকুয়েল লাইব্রেরী ইনস্টল করে নিতে হবে ।
1 |
pip install MySQL-python |
এই প্যাকেজটি সি থেকে কম্পাইল করা হয় তাই ইন্সটল করার জন্য বেশ কিছু ডিপেন্ডেন্সীর প্রয়োজন পড়ে (যেমন: পাইথন এবং মাইসিকুয়েলের সি হেডার) । আপনার সিস্টেমে যদি সব গুলো ডিপেন্ডেন্সী না থাকে তবে ইরর মেসেজ দেখে দেখে সেগুলো ইনস্টল করে নিতে হবে ।
যারা ডেবিয়ান বা উবুন্টুতে আছেন, তাদের জন্য অবশ্য ইনস্টলেশন বেশ সহজ –
1 |
sudo apt-get install python-mysqldb |
এই এক কমান্ডেই প্যাকেজ ম্যানেজার যা যা লাগবে সব ইনস্টল করে তারপর মাইসিকুয়েল বাইন্ডিং ইনস্টল করে দিবে ।
জ্যাঙ্গোর ভার্সন মিলিয়ে দেখা
আমরা ভার্সন 1.5 ব্যবহার করবো এই বইতে । তাই আসুন, জ্যাঙ্গোর ভার্সন দেখে নেই –
1 |
django-admin.py --version |
এই কমান্ডটি রান করালে আমরা জ্যাঙ্গোর ভার্সনটি জানতে পারবো । যদি আউটপুট আসে 1.5.* ফর্ম্যাটে তাহলে আমরা সঠিক ভার্সনই ইনস্টল করেছি ।
বাংলায় পাইথন – ফাংশন
আমাদের প্রোগ্রামের যে অংশগুলো বার বার আসে সেগুলোকে আমরা পুনরায় ব্যবহারযোগ্য একক (reusable unit) হিসেবে ব্যবহার করতে পারি ফাংশনের সাহায্যে । গনিতে যেমন দেখেছি কোন ফাংশন একটি ইনপুট নিয়ে সেটার উপর বিভিন্ন ধরনের ম্যাথ করে আউটপুট দেয়, প্রোগ্রামিংএও সেই একই ব্যাপার ঘটে । আপনি এক বা একাধিক প্যারামিটার পাস করবেন একটি ফাংশনে, ফাংশনটি প্রসেস করে আপনাকে আউটপুট “রিটার্ন করবে” । তবে প্রোগ্রামিং এর ক্ষেত্রে সবসময় যে ইনপুট থাকতে হবে বা আউটপুট দিতে হবে এমন কোন কথা নেই ।
একটি ফাংশন আসলে কিছু স্টেটমেন্টের সংকলন । যখনই কোন ফাংশন কল করা হয় তখন এই ফাংশনের ভিতরে থাকা স্টেটমেন্টগুলো এক্সিকিউট করা হয় । পাইথনে আমরা ফাংশন ডিক্লেয়ার করার জন্য def কি-ওয়ার্ডটি ব্যবহার করি । আসুন দেখে নেই একটি ফাংশন:
1 2 3 |
def hello(): print "Hello World!" return 0 |
প্রথমে আমরা def কি-ওয়ার্ডটি লিখেছি । তারপার ফাংশনের নাম – “hello”, এবং তারপর (). যদি আমরা ফাংশনটিতে কোন ইনপুট দিতে চাই সেক্ষেত্রে প্যারামিটারগুলো এই () এর মধ্যে কমা দিয়ে আলাদা করে লিখতে হবে । আমরা দেখতে পাচ্ছি, এই ফাংশনে আমরা কোন ইনপুট দিচ্ছি না । ফাংশনটি “Hello world!” প্রিন্ট করবে । সি-প্রোগ্রামিং এর সাথে মিল রেখে (এবং রিটার্ন স্টেটমেন্টের ব্যবহার দেখানোর জন্য) আমরা 0 রিটার্ন করছি । আসলে এই স্টেটমেন্টের কোন দরকার ছিল না ।
এবার আসুন দেখা যাক পাইথনে কিভাবে আমরা ফাংশন প্যারামিটার পাস করব ।
1 2 |
def sayHello(name): print "Hello, "+name+" !" |
এই ফাংশনটিকে কল করুন এভাবে: sayHello(“maSnun”)
এবার http://learnpythonthehardway.org/book/ex19.html এই পেইজ থেকে ফাংশন নিয়ে কিছু ঘাটাঘাটি করুন । ইনশা আল্লাহ, নেক্সট পোস্টে পাইথনে ফাংশনের আরো কিছু দিক নিয়ে আলোচনা করার চেষ্টা করব ।
বাংলায় পাইথন – ইন্ডেন্টেশন
অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ থেকে পাইথনে আসলে প্রথম যে সমস্যাটি চোখে পড়ে তাহল পাইথনের ইন্ডেন্টেশন বেইজড কোড ব্লক । পাইথনের একই ইন্ডেন্টেশন সম্বলিত পর পর অবস্থিত লাইন গুলো একই কোড ব্লকের অন্তর্ভুক্ত । উদাহরণ না দিলে হয়ত বিষয়টি স্পষ্ট হবে না ।
1 2 3 4 |
if True: ....print "hello world" ....print "Hi there" ....print "4 space indentation" |
এখানে আমরা ডট (.) দিয়ে স্পেইস বুঝিয়েছি । নিজে টাইপ করার সময় ডট এর পরিবর্তে স্পেইস ব্যবহার করুন না হলে প্রোগ্রাম রান করবে না । এখানে দেখুন ৩টি প্রিন্ট স্টেটমেন্ট আছে যারা একটির পর আরেকটি অবস্থিত এবং প্রত্যেকটি ৪টি স্পেইস দিয়ে ইন্ডেন্ট করা । এর ফলে এই প্রিন্ট স্টেটমেন্ট গুলো একটি কোড ব্লক হিসেবে কাজ করে । কোন স্টেটমেন্ট এ যদি একই ইন্ডেন্টেশন না থাকত সেক্ষেত্রে পাইথন এক্সেপশন (এরর) থ্রো করত ।
1 2 3 4 5 6 7 8 |
if True: ....print "hello world" ....print "Hi there" ....print "4 space indentation" else: ....print "another block" ....print "same indentation as of the if block" ....print "but terminated with the else condition" |
এখানে দেখুন প্রথম ব্লকের পর ইন্ডেন্টেশন আগের জায়গায় ফিরিয়ে নিয়ে ব্লকের সমাপ্তি টানা হয়েছে । পরে আবার ৪ স্পেইস ইন্ডেন্ট করে আরেকটি ব্লকের সূচনা করা হয়েছে । আগের ব্লক এবং এই ব্লক দুটোরই একই ইন্ডেন্টেশন কিন্তু এরা একই ব্লক নয় । কারণ এদের মাঝে else আছে ।
এবার দেখি নেস্টেড ব্লক:
1 2 3 4 5 6 7 8 |
if True: ....print "hello world" ....print "Hi there" ....print "4 space indentation" ....if True: ........print "nested block" ........print "8 spaces" ....print "back to prev block" |
এখানে আমরা স্পেইস এর পরিমান বাড়িয়ে দিয়ে নেস্টেড ব্লক তৈরি করলাম । একইভাবে স্পেইস এর পরিমান সমান পরিমানে কমিয়ে নিয়ে আগের ব্লকে ফিরে গেলাম ।
পাইথনের হোয়াইটস্পেস বেইজড ইন্ডেন্টেশন বুঝতে প্রথম প্রথম বেশ কষ্ট হয় । এজন্য দরকার অনুশীলন । নিজে নিজে ইন্ডেন্ট করার চেষ্টা করুন । গুগলে অনুসন্ধান করে দেখতে পারেন পাইথনের ইন্ডেন্টেশন নিয়ে ।