Category Archives: বাংলা

রিসার্চ, সফটওয়্যার ডেভেলপমেন্ট, বিসিএস, জিআরই, এইদেশ না বিদেশ ?!

২০১৩/১৪ এর দিকে এদেশের মানুষের মাঝে Android নিয়ে যে হাইপ ছিল সেটা কি এখন অনেকটা ডাটা সায়েন্স এর দিকে চলে যাচ্ছে ? প্রযুক্তি মানুষের মনের মতই দ্রুত বদলায় কিনা ! যদিও আমাদের দেশে Data Science এর শাখা প্রশাখা AI,ML, DeepLearning এসব নিয়ে কাজ করার সুযোগ এখনো অনেকংশেই কম। বেশিরভাগ সফটওয়ার ফার্মগুলো ডেভেলপমেন্ট করেই খুশি। বাইরের দেশগুলার মত এদেশের ফার্ম গুলোতে আরএনডি(RnD) বা রিসার্চ এন ডেভেলপমেন্ট বলে বেশির ভাগ জায়গাতেই কিছু নাই। এদিক দিয়ে একাডেমিক সেকটর মনে হয় কিছুটা এগিয়ে আছে। রিসার্চ করা যায়। তাই কেউ ইন্ডাস্ট্রি তে আসতে চাইলে নিজেকে যেকোনো একটা ডেভেলপমেন্ট প্লাটফর্মে Entry Level Software Engineer হিসেবে প্রস্তুত করাই শ্রেয়।
 

আবার CSE ফিল্ডে উচ্চতর শিক্ষার(MSc বা PhD) বেশিরভাগ বিষয়ের নামধাম যাই থাকুক না কেন তা নিয়ে গভীরে ঘাটতে গেলে দেখা যায় বেশিরভাগ ক্ষেত্রেই সাব্জেক্ট গুলো একবিন্দুর উপর দিয়ে চলে গেছে অনেকটা বহমান স্রোতের মতন যেমনঃ  Computational Biology/Advanced Digital Image Processing etc. এর বিষয় বস্তু আলাদা হলেও অল্পজ্ঞানে ঘাটাঘাটি করে যা বুঝলাম কাজ করতে হয় সুপারভাইজড/আনসুপারভাইজড লার্নিং এর ওপর বেইজ করে । কিন্তু এদেশের সমাজে পড়াশোনা চলে অনেকটা ব্র্যন্ডিং এর উপর। আর বাদবাকিটা থিওরি আর CGPA আর টাকা কোনটায় বেশি তার ওপর নির্ভর করে আর বাকিটা বিসিএস ! রিসার্চ মাইন্ড, প্র্যাক্টিকাল কাজ জানা, সফটওয়্যার ডেভেলপমেন্ট কোর প্রোগ্রামিং ভাল লাগা কিংবা পছন্দের সাবজেক্ট এর পড়ার থেকে ভার্সিটির ব্র্যান্ডিং টাই এদেশে গুরুত্ব পায় বেশি!

গবেষণার তেমন একটা মূল্য বাইরের দেশ গুলোর মতন এদেশে এখনো নাই কারণ বেশিরভাগ ক্ষেত্রেই যে সাব্জেক্টে বা ভার্সিটিতেই পড়ুক না কেন বিসিএস না দিলে এ সমাজ তোমাকে কেন মেনে নেবে ? তাই বিষয়ভিত্তিক শিক্ষা নেয়ার চেয়ে সম্মান(Hons) এর চার বছর শেষে তোমার হয়ত মনে হতে থাকবে OOP নিয়ে সারারাত পড়ে না থেকে বিসিএস এর মোটা বইগুলো পড়াই বোধহয় ভাল ছিল। কেননা জনসংখ্যার ভারে ন্যুব্জ এদেশে বাইরের দেশ গুলোর মত STEM ফিল্ডে সেভাবে রিসার্চ গ্রান্ট এখনো তৈরি হয়না। আর যাও কিছুটা গ্রান্ট পাওয়া যায় তা পেতেও অনেক ঝক্কি সেটা সবারই জানা! তাই হয়ত গবেষণার সংজ্ঞা হয়ে গেছে বাইরে যেতে লাগে দেশে যেনো কোনো দরকার নাই !

সরকারী পর্যায়ে অন্যান্য ডিসিপ্লিনে কিছুটা রিসার্চ করার সুযোগ আছে কিন্তু CSE ফিল্ডের রিসার্চারদের সরকারী ভাবে তেমন কোনো সুযোগ আমি এখনো খুজে পাই নাই (রিসেন্ট চালু হওয়া ফেলোশিপ ছাড়া) । তবে অ্যাসিস্ট্যন্ট প্রোগ্রামার এর পদের পরীক্ষায় বাংলা ইংলিশ আর ইতিহাস খুজে পেয়েছি। এভাবেই আমরা ডিজিটাল বাংলাদেশের দিকে এগিয়ে যাচ্ছি !

ইসরায়েল বা ইরান নিজেরা পরমাণু এবং অন্যান্য দিক দিয়ে উন্নত হয়েছে তাদের রিসার্চারদের দাম দেয়ার কারণে। তাদের অর্থনীতিতে সমরাস্ত্রের পর বাজেটের একটা বিরাট অংশ তারা রেখেছে রিসার্চের জন্য। তারা রিসার্চারদের গুরুত্ব বোঝার কারনেই তা করেছে ।

একারনেই হয়ত এদেশের টপমোস্ট বিশবিদ্যালয়গুলো থেকেও পাশ করার পর কস্ট করে হলেও অনেকেই বাহিরে চলে যায়। বাইরে ভাল করে। দেশে তাদের সেভাবে কাজের সুযোগ না থাকলেও বাইরে গিয়ে দেশের নাম উজ্জল হয়। Amazon, Google এ জয়েন করলে পত্রিকায় ছাপা হয় ফলাও করে । তাদের মাঝে যারা ফিরে আসে তারা দেশকে ভালবেসেই আসে। তানাহলে রাস্তায় ডাস্টবিন উপচে পড়ে  থাকা কিংবা সামান্য বৃষ্টিতে পানি ঊঠে যাওয়া কিংবা অসহ্য ট্রাফিক জ্যাম, ভাঙ্গা রাস্তা আর সারাদিন কাজ শেষে ক্লান্ত দেহ নিয়ে পাবলিক বাসে একটু দাঁড়িয়ে থাকার জায়গা  খুজে না পাওয়া ব্যাপারগুলা মেনে নেয়াটা বেশ কস্টকর।

যাই হোক CSE কিন্তু কেবল সফটওয়্যার ডেভেলপমেন্টের জন্য না। এর বিস্তৃতি সমুদ্রের মতন বিশাল। সফটওয়্যার ইঞ্জিনিয়ারিং এই সমুদ্রের মাঝে একটা দ্বীপ বলা যায়…আর এর এই দ্বীপের হার্ট বা হৃদয় হচ্ছে কোর প্রোগ্রামিং, অ্যাল্গো, ডাটা স্ট্রাকচার, OOP ইত্যাদি বেসিকস। যার এগুলো নিয়ে ঘুটিঘাটী ভাল লাগে সে চাইলেই যেকোনো দিকে সুইচ করতে পারে মনের স্থিরতার জন্য।  হয় একাডেমিয়া কিংবা ইন্ডাস্ট্রি কিংবা যেকোনো প্লাটফরমে সুইচ করা। আর টেকনিকাল স্কিলের সাথে সিরিয়াসনেস থাকলে সিজিপিএ ফ্রিতে চলে আসতে পারে বৈকি !

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

আর ৪ বছরের কোর্স গুলো শেষ করার পর  বিসিএস দেয়াটাই যদি একটা সমাজের মানুষের কাছে একমাত্র মূলনীতি হয় তাহলে ভাই জিআরই দিয়ে সুবোধের মতন দূরে কোথাও চলে যাওয়াটাই মনে হয় অতি উত্তম! তাই নয় কি ?!

এগুলো আমার একান্তই নিজের ব্যাক্তিগত পর্যবেক্ষ্ণ থেকে লিখা। কাউকে কস্ট দেয়ার জন্য নয়  তাই কোনো ভুল কিছু থাকলে  ক্ষমা সুন্দর দৃষ্টিতে দেখবেন । গঠনমূলক মন্তব্য স্বাগতম । শেয়ার করতে চাইলে উপযুক্ত ক্রেডিট দিয়ে শেয়ার করতে পারবেন । ধন্যবাদ সময় ও ধৈর্য্য নিয়ে  লিখাটি পড়ার জন্য 🙂

#মনকথা #মনজিজ্ঞাসা #ভাবনা # পর্যবেক্ষণ #CSE #দেশ #বিদেশ

[ আরেকদিন সময় নিয়ে আমার ব্যক্তিগত অভিজ্ঞতা থেকে সিএসই স্টুডেন্ট এর ক্যারিয়ার, ব্যর্থতা এবং সাফল্য  নিয়ে লিখব ততদিন পর্যন্ত সবাই ভাল থাকবেন ]

OOPs ! অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কনসেপ্ট এবং তার সূচনা :D


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

যাই হোক প্রথমেই ধরে নেই এই লিখার উদ্দ্যেশ্য সম্পর্কেঃ আমরা সাধারণত ফাংশনাল প্রোগ্রামিং নিয়ে যেমনঃ সি তে একটা সময় কাজ করি, কিন্তু বৃহৎ আকারের কোনো সফটওয়্যার বানাতে গেলে আমার লিখা কোডগুলো যেন আরেকজনের কাছে বোধগম্য হয় এবং কোনো ঝামেলা ছাড়াই আরেকজন যেন সেটা নিয়ে কাজ করতে পারে(Resuability) এবং ছোটো ছোটো ভাগে ভাগ(Modularity) করা যায় সেই সুবিধা গুলো থাকা দরকার। তাছাড়া ইচ্ছা হলেই যেন তাতে একদম নতুন কিছু বৈশিষ্ট্য (Extensibility) জুড়ে দেয়া যাবে কিংবা ডিবাগ করা যাবে সেই অপশন রাখাটাও জরুরী। তাছাড়া স্পর্শকাতর কোনো ইনফরমেশন চাইলেই সফটওয়্যার ডেভেলপিং এর সময় আরেকজনের কাছে শো করবেনা এই ব্যাপারটাও(Information Hiding) নিশ্চিত করা জরুরী ।

সেই তাড়না থেকেই অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কনসেপ্টটার সৃষ্টি ।তানাহলে প্রোসিডিউরাল বা ফাংশনাল প্রোগ্রামিং দিয়েই কিন্তু কাজ চলে যেত 🙂

নিচের ছবিটাতে পার্থক্য দেখানো হল স্ট্রাকচারাল/প্রোসিডিউরাল এবং অব্জেক্ট ওরিয়েন্টেড প্রোগ্রামিং প্যারাডাইম সম্পর্কেঃ

যাই হোক ছবি দেখে হয়ত সব কিছু পরিস্কার হবে না তাই আমি চাচ্ছি নিচে এর সম্পর্কে কিছুটা আলোচনা করতে।

তো প্রথমেই প্রশ্ন রইল যে অবজেক্ট কি ?…আসলে অবজেক্ট হচ্ছে বস্তুগত ভাবে আমাদের আশেপাশে আমরা যা কিছুই দেখতে পাই কিংবা অনুভব করতে পারি তাইই অব্জেক্ট। ধরা যাক, আমি এই পোস্টটা লিখতে গিয়ে কি-বোর্ড, মাউস ইত্যাদি ব্যবহার করছি। সুতরাং, এই কি-বোর্ড, মাউস আলাদা আলাদা ভাবে অবজেক্ট কিংবা আমি যেই কিবোর্ড দিয়ে লিখছি সেই কিবোর্ডের রং কালো অথবা সাদা, এই রং এর ব্যাপারটা অবজেক্ট এর একটা অংশ বলা যায়(Property)। কিংবা আমাকে এই কি-বোর্ডটা আইডিবি ভবন থেকে কিনে আনতে কিছু আর্থিক ট্রাঞ্জাকশন করতে হয়েছে যেখানে আমি ছিলাম একজন ক্রেতা আর বিক্রেতা সেটা সেল করেছেন আমার কাছে অর্থের বিনিময়ে তো এখানে এই সেলস ট্রাঞ্জাকশান টাকেও এক প্রকারের অবজেক্ট বলে আমরা ধরে নিতে পারি।আবার হয়তবা আমি কি-বোর্ড দিয়ে চ্যাট করছি অথবা কোড করছি এই যে বিভিন্ন ধরনের কাজ সম্পন্ন হচ্ছে কি-বোর্ডটা দিয়ে এটাও অবজেক্ট এর একটা অংশ(Functionality)। আসলে একটা সমস্যার সমাধানে আমরা যেই একক বৈশিষ্ট্যগুলো নিয়ে কাজ করি তাকেই অবজেক্ট বলা যায়।  এখানে তাই বৈশিস্ট্য(Attribute) এর পাশাপাশি কি ধরনের কাজে লাগছে(Functionality) সেটা জানাটাও জরূরী।

 

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

তাহলে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কাকে বলে ?
অবজেক্ট জিনিসটাকে আমরা একটা সুন্দর র‍্যাপিং পেপার দিয়ে মোড়ানো একটা গিফট বাক্স হিসেবে চিন্তা বা কল্পনা করতে পারি যার বিভিন্ন ধরনের বৈশিস্ট্য বা Property বিদ্যমান। তবে এর ভেতরের অবস্থা সম্পর্কে আমরা বাইরে থেকে অবগত নই।

কিন্তু অবজেক্টগুলো একটার সাথে আরেকটা যোগাযোগ  রক্ষা করতে পারবে মেসেজের মাধ্যমে । মেথড নামক একটা সিস্টেম থাকবে যা এই মেসেজগুলো নিয়ে কাজ করবে। আর প্রতিটা অবজেক্ট এরই কিছু ব্যাক্তিগত নির্দিস্ট দায়িত্ব/Functionality থাকবে যা কেউ প্রোগ্রাম করে দিলে সে অনুযায়ী তার দায়িত্ব পালন করবে(Method)।

তো কোনো সফটওয়্যার আমরা যদি বানাতে চাই, সেটা বানাতে গিয়ে প্রোগ্রামিং করার সময় যখন এই উপরোক্ত ব্যাপারগুলো(বৈশিস্ট্য, মেথড, মেসেজ সেন্ডিং ইত্যাদি) আমাদের যদি মেনে চলতে হয় তখন তাকে অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং হিসেবে আমরা বলতে পারি।

আরো বিষদ বিবরণে আমরা পরে যাচ্ছি কারণ বেসিক কনসেপ্টগুলার সম্পর্কে একটা আইডিয়া পেতে এটা একটি সূচনামূলক পোস্ট।
তো যাই হোক এভাবে অনেকটা বলা যায়ঃ

অবজেক্ট = ডাটা(যা অবজেক্ট এর প্রপার্টি/Attribute গুলা স্টোর করতে ভূমিকা রাখে) + মেথড(যোগাযোগ রক্ষা জাতীয় কিছু করা/Functionality/অবজেক্ট এর Behavior হিসেবে কাজ করে)

আর এই OOP কিন্তু কোনো ল্যাঙ্গুয়েজ স্পেসিফিক কিছু না মানে এটা আসলে একটা মডেল বা প্যারাডাইম(Paradigm) যার সুবিধা মোটামুটি সবধরনের হাইলেভেল প্রোগ্রামিং ল্যাঙ্গুয়েজেই(Java, C#, PHP, C++, Python ইত্যাদি) বিদ্যমান। এবং ইমপ্লিমেন্টেশান এর কনসেপ্ট গুলি সব ল্যাঙ্গুয়েজের ক্ষেত্রেই মোটামুটি একই ধরনের প্যাটার্ন ফোলো করে।

যাই হোক নিচে C++ দিয়ে একটি ছোটো উদাহারণ দেখা যাকঃ

বিহেভিয়ার এবং মেসেজঃ একটা অবজেক্ট সাধারণত কাজ করে তাঁর মেথড এর মাধামে এবং কিছু প্যারামিটার মেথড টাতে থাকতে পারে আবার নাও থাকতে পারে। যদি থাকে তবে সেইটার কাজ হচ্ছে সেই প্যারামিটারযুক্ত মেথডটা যেন অন্য কোনো মেথডের সাথে তথ্য আদান প্রদান করে। এবং এই মেথড টা কি কাজে ব্যবহার হচ্ছে সেটাকে অবজেক্টটার বিহেভিয়ার বলে। আমরা যাকে রিয়েল লাইফে Verb দিয়ে বুঝাই সেটাই সাধারণত অবজেক্ট এর Behavior যা পরে Method নেম হিসেবে ব্যবহার করা হয়। যেমনঃ doChat(), doEat(), doType() ইত্যাদি। অনেকটা Functional Programming Language এর ফাংশন এর মতন কাজ হয় OOP এর মেথডে।

তাছাড়া, আমি যদি রিয়েল লাইফে কাউকে জিজ্ঞেস করি How are you? সে যদি রিপ্লাইয়ে রিটার্ন করে বলেন “I am fine”, মেথড দিয়েও ব্যাপার টা আসলে অনেকটা এমনই হয় যখন মেসেজ পাসিং এর কাজ করে। মেথডের এর মাধ্যমে মেসেজটা পাস হয় রিয়েল লাইফের উপরের উদাহারণটার মতন।

আমরা যখন অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং নিয়ে কাজ করব, তখন আমাদের মাথায় দুইটা জিনিস রাখতে হবে,

এক, ক্লাস তৈরিঃ আমাদের আগে ক্লাস তৈরী করে ফেলতে হবে OOP নিয়ে কাজ করতে গেলে ।
দুই, অবজেক্ট ইন্ট্যার‍্যকশনঃ আমাদের অবজেক্টগুলো তৈরী করতে হবে ক্লাস থেকে। বিভিন্ন অবজেক্ট এর ব্যবহার ও উদ্দ্যেশ্য বিভিন্ন হতে পারে।

অবজেক্ট ওরিয়েন্টেড কনসেপ্টের অন্যান্য বেসিক বা মূল টার্মিনোলোজি গুলা অনেকটা এরকম যেঃ

ক্লাসঃ ক্লাসের কথা যখন আসলই তখন বলা যায় যে একটা অবজেক্ট কে যা দিয়ে ডিফাইন করা যায় সেটাই ক্লাস।তাহলে দেখি কিভাবে তা করা যায়ঃ নিচের উদাহারণে আমরা Keyboard নামের একটা ক্লাস লিখে ফেললাম যার কিছু বৈশিষ্ট্য আছে যেমনঃ প্রাইস, মডেল, ব্র্যান্ড ইত্যাদি বিভিন্ন কি বোর্ডের জন্য বিভিন্ন রকম। আর কি বোর্ড দিয়ে কিছু স্পেসিফিক কাজও করার আছে যেমনঃ এটা দিয়ে আমি চাইলে মেসেঞ্জার এর নির্দিস্ট টেক্সট বক্সে লিখে চ্যাট করতে পারি তাই DoChat() মেথড, চাইলে ওয়ার্ডে টাইপ করতে পারি যেমনঃ DoTypeInMsWord() মেথড অথবা চাইলে কোডব্লক্সে কোড লিখতে পারি তাই DoCode() মেথড ইত্যাদি।

তো এই Keyboard ক্লাস থেকে আমরা চাইলেই একটা অবজেক্ট তৈরি করে ফেলতে পারব যার নাম দিলাম Ke । নিচে তা দেখালামঃ

এরকম করে এখান থেকে আমরা একটা ক্লাস থেকে প্রয়োজন অনুসারে অসংখ্য অবজেক্ট তৈরী করতে পারি। যার ফলে বলা যায় ক্লাস হচ্ছে অবজেক্টের একটা ছাচ বা টেমপ্লেট(“Class is a blueprint/template of an Object or An object is an instance of a Class”)। 🙂

অ্যাবস্ট্রাকশানঃ

প্রয়োজনীয় এবং অপ্রয়োজনীয় তথ্যের ভীড়ে অপ্রয়োজনীয় তথ্য বাদ দিয়ে কেবল কাজের এবং দরকারী তথ্য নিয়ে কাজ করাকেই অ্যাবস্ট্রাকশন বলে যেমনঃ ধরেন আমার একটা বাইসাইকেল আছে এখন সেই সাইকেলটা চালানোর সময় আমি যদি ব্রেক চাপ দেই সেটা থেমে যাবে তো সেক্ষেত্রে আমার কিন্তু জানলেই হচ্ছে কোনটায় চাপ দিলে ব্রেক কাজ করে কিংবা কোনটায় চাপ না দিলে ব্রেক কাজ করবে না…আমার কিন্তু এখানে জানা লাগছে না যে ব্রেকের ভেতরের মেকানিজম টা কি….এই যে প্রয়োজনীয় অংশ টা জানলেই কাজ হয়ে যাচ্ছে ভেতরের ব্যপার জানা লাগছে না এই ধর্মটাকেই বলে আবস্ট্রাকশন ইন OOP. এভাবে বলা যায় যে, Hiding internal details and showing functionality is known as abstraction.

উদাহারণ হিসেবে আরো দেয়া যায় যে ধরূন একটা এটিএম বুথে গেলে এটিএম মেশিন থেকে আমরা টাকা তুলতে পারি, টাকা জমা দিতে পারি কিন্তু আমরা জানিনা যে এটিএম মেশিন আসলে কিভাবে কাজ করছে কিন্তু তা না জানা সত্তেও আমরা কিন্তু কয়েকটা বাটন প্রেস করেই এর সুবিধা নিতে পারছি সুতরাং এই ব্যাপারটাই আসলে Abstraction. নিচের ছবিটা দেয়া হল ভিজুয়ালি বুঝার সুবিধার জন্য 🙂


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

ক্যাপসুল শব্দটা থেকে এনক্যাপসুল শব্দটা আসা ।এর কারণ হচ্ছে ক্যাপসুল হিসেবে আমরা যেই ঔষধ খাই তার দুইটা প্রকোষ্ঠে দুই ধরনের কেমিক্যাল থাকে যা একটা থেকে আরেকটা মিশে যায় না তাছাড়া এর ভিতরে কি উপাদান আছে তা আমরা ক্যাপসুল এর বাইরে থেকে জানতে পারিনা অর্থাৎ OOP এ আমাদের কাছে তথ্য বা ডাটা হাইড করা আছে বা এনক্যাপসুলেটেড অবস্থায় আছে ঠিক যেরকম ভাবে ক্যাপসুলে থাকে।

ছোটো একটা উদাহারণ দেখি নিচের কোড এবং কমেন্টস এর মাধ্যমেঃ

ইন্টারফেস ব্যাপারটা আমরা পরে আরো বিস্তারিত আলোচনা করব তবে এতটুকু জেনে রাখা দরকার যে এটা আলাদা একটা ক্লাস হিসেবে কাজ করে এবং যা অন্যান্য ক্লাসের/মেথডের কাজ শুরু করার জন্য এক ধরনের অনুমতি/ভূমিকা হিসেবে কাজ করে । মালটিপল ইনহেরিট্যান্স এর কাজেও সি# এ এই interface ব্যবহার করা হয়।

যাই হোক এখানে আমাদের মনে প্রশ্ন আসতে পারে যে , উপরে উল্লেখিত  Abstraction আর Encapsulation এর কাজ তো দেখা যাচ্ছে মোটামুটি একই রকম তাহলে তাদের মধ্যে পার্থক্য কোথায় ? ব্যাপারটা বোঝার জন্য StackOverFlow এর এই লিংক দুটা দেখা যেতে পারে।

https://stackoverflow.com/a/13589763/3957530
https://stackoverflow.com/a/31243756/3957530

এই লিংকগুলো থেকে ঘেটে যা বোঝা যাচ্ছে তা হল অ্যাবস্ট্রাকশনের(Abstraction) একটা সাবসেট হচ্ছে এনক্যাপ্সুলেশান(Encapsulation)। নিচের ছবিটা দেখলে ব্যাপারটা আরো স্পষ্ট হবে।

ইনহেরিট্যান্সঃ এটাকে বলা যায় অনেকটা উত্তরাধিকার বা পৈত্রিক সম্পত্তি পাওয়ার মতন.. যেমনঃ একজন সন্তান হয়ত উত্তরাধিকার সূত্রে তার বাবা-মার সম্পত্তি অটোমেটিকালি পেয়ে যাবে তার বাবা-মা হয়ত সেই সম্পত্তি পেয়েছিল তার দাদা-দাদিমার থেকে। সেক্ষেত্রে আমরা বলতে পারি চাইল্ড ইনহেরিটেড প্রপার্টিজ ফ্রম হিজ প্যারেন্টস।

অবজেক্ট ওড়িয়েন্টেড প্রোগ্রামিং(OOP) এ পাবলিক কিংবা প্রোটেক্টেড  করে রাখা সব প্রপার্টি একজন চাইল্ড তার প্যারেন্টের থেকে অটোমেটিকালি পেয়ে যাবে (কিন্তু কেবল প্রাইভেট বা ব্যাক্তিগত জিনিস অটোমেটিকালি সে তার প্যারেন্টস এর থেকে পাবে না)

আমাদের আসলে এসব ক্ষেত্রে রিয়েলওয়ার্ল্ড এক্সামপল দিয়ে চিন্তা করা উচিৎ। যেমন ঃ একজন পিতা বা মাতা তাদের নিজেদের সম্পত্তির একটা অংশ হয়ত তার সন্তানের জন্য রেখে যেতে পারেন…তবে তারা তাদের নিজেদের ব্যাক্তিগত ব্যবহারে লাগে এমন জিনিস যেমন ঃ জামাকাপড়, মোবাইল ফোন, ল্যাপটপ, চলার মতন সম্বল(যেমনঃ অর্থ) ইত্যাদি তার সন্তান কে হয়ত উত্তরাধিকার সূত্রে নাই দিতে পারেন সেক্ষেত্রে এই ব্যাপারটা হয়ে গেল প্রাইভেট(private) আর সম্পদের যেই অংশটুকু সন্তানের রেখে দিয়েছেন জন্য সেই অংশটুকু হতে পারে পাবলিক অথবা প্রোটেক্টেড। Public, Private, Protected, Internal এইগুলোকে access specifier বলে। এই Specifier গুলা নিয়ে আরো বিস্তারিত সামনে লিখব ইনশাল্লাহ।

তো যাই হোক Inheritance এর এই ব্যাপারটাকে “is a” রিলেশানশিপ দিয়ে প্রকাশ করা হয়।
যেমনঃ
A teacher is a person এখানে টিচার পারসন কে ইনহেরিট করছে
A dog is an animal এখানে ডগ এনিমেল কে ইনহেরিট করছে কারন এখানে এনিমেল হচ্ছে প্যারেন্ট আর ডগ হচ্ছে তার চাইল্ড
A car is a vehicle এখানে কার ভেহিকল কে ইনহেরিট করছে আবার mortorcycle কিংবা truck ও vehicle কে ইনহেরিট করতে পারে। সুতরাং vehicle হচ্ছে প্যারেন্ট ক্লাস আর car, motorcycle, truck হচ্ছে চাইল্ড ক্লাস।

উপরের এই ছবি দেখে আমরা আবার বলতে পারি, A station wagon is a car, A jeep is a car ইত্যাদি।

তো আমরা অনেকটা এভাবে বলতে পারি যে, প্যারেন্ট ক্লাসটাকে ধরে নিলাম Class A এবং তা হচ্ছে Superclass আর চাইল্ড ক্লাস টাকে ধরলাম Class B আর সেটা হচ্ছে Subclass বা Derived class। তাহলে এভাবে বলা যেতেই পারে Class B extends/inherits Class A।

পলিমরফিজমঃ

Poly=অনেক + Morph = রূপ এই দুই গ্রিক শব্দের ব্যবহার এই Polymorphism ব্যাপারটাকে নাম করনের মাধ্যমেই আরো স্পস্ট ভাবে তুলে ধরেছে ।

পলিমরফিজম হচ্ছে অব্জেক্ট ওরিয়েন্টেড প্রোগ্রামিং এর একটা কনসেপ্ট বা বৈশিষ্ট্য যা ইমপ্লিমেন্ট করা যায় স্ট্যাটিক পলিমরফিজম(যা কম্পাইল টাইম পলিমরফিজম নামেও পরিচিত বা Early binding,  ইহাকে ফাংশন/মেথড ওভারলোডিং বলে) এবং ডাইনামিক পলিফরজিম(যা রানটাইম পলিমরফিজম নামেও পরিচিত বা Late Binding যা মেথড/ফাংশান ওভাররাইডিং ও বলে) এর মাধ্যমে

Polymorphism implemented by function overloading or function overriding.Where function/method overloading is compile time polymorphism and Function overriding is runtime polymorphism.

এখানে ফাংশান ওভারলোডিং(Function Overloading) নিয়ে আলোচনা করা হলঃ

এটাকে বলা যায় বহুরূপী আচরণ, যেমন একজন পুরুষ মানুষ ধরলাম তার নাম Rahim সাহেব । তিনি শিক্ষাজীবনের পড়ালেখার পার্ট শেষে হাসপাতালে একজন ডাক্তার হিসেবে কাজ করতে পারেন আবার তিনি তাঁর নিজের বাসাতে তাঁর সন্তানের একজন বাবা/টিচার হিসেবেও কাজ করতে পারেন। কিন্তু দিনশেষে তিনি কিন্তু একই নামে সব জায়গায় পরিচিত সেটা হচ্ছে তার নাম Rahim সাহেব। সুতরাং, এই যে একটা মানুষের নাম একই আছে কিন্তু ভিন্ন ভিন্ন কাজের ক্ষেত্রে বহুরুপতা এই ব্যাপারটাকেই পলিমরফিজম এর ওভারলোডিং মেকানিজম বলে। যাকে Function/Method ওভারলোডিং ও বলে।

অর্থাৎ, When an object performs multiple task in the same name we call it function overloading

পরবর্তিতে ফাংশান ওভাররাইডিং(Overriding) নিয়েও আলোচনা করা হবে আর আমরা উদাহারণ দিয়ে পলিমরফিজমের অন্যান্য বিস্তারিতও দেখব।

অ্যাসোসিয়েশানঃ

Association হচ্ছে একটা অবজেক্ট এর সাথে আরো অনেকগুলা অবজেক্ট এর সম্পর্ক(One to many), অনেকগুলা অবজেক্ট এর সাথে একটা অব্জেক্ট এর সম্পর্ক(many to one), অনেকগুলা অবজেক্ট এর সাথে অনেকগুলা অবজেক্ট এর সম্পর্ক(Many to Many) ইত্যাদি । UML diagram এ একে Arrow সাইন দিয়ে প্রকাশ করা হয়। অবজেক্ট গুলোর মধ্যে Multiplicity সম্পর্ক ব্যাখ্যা করতে Association ধারনাটার উৎপত্তি।

অ্যাসোসিয়েশান কে আরো সূক্ষ্মভাবে ব্যাখা করতে আরো কিছু জিনিস জানা প্রয়োজন। তাই Association এর  একটা অংশ হচ্ছে Aggregation। আর Aggregation এর একটা অংশ হচ্ছে Composition।

 উপরোক্ত ছবিটা দেখলে ব্যাপারগুলা স্পস্ট হয়ে যাবে Association, Aggregation and Composition

উপরোক্ত ছবিটাতে দেখানো হয়েছে Association, Aggregation and Composition এর প্রকাশ করতে ব্যবহৃত Object Notation

এগ্রিগেশন ও কম্পোজিশানঃ দুইটা অবজেক্ট আছে তাদের মধ্যে  যদি একটা অবজেক্ট এর স্থায়িত্ব বা জীবনকাল আরেকটা অবজেক্টের ওপর নির্ভরশীল না হয় তখন তাদের মধ্যে সেই সম্পর্কটাকে বলে এগ্রিগেশান(Aggregation)। এটাকে “has a” রিলেশনশীপ দিয়ে প্রকাশ করা যায়।
যেমনঃ A classroom has students এক্ষেত্রে একটা ক্লাস রুমে অনেকজন ছাত্র ছাত্রী আছে এটা aggregation। কারণ যদি একটা ক্লাস রুম এ জায়গা নাও থাকে তবুও student রা থাকতে পারে। অন্য কোনো জায়গায় হয়ত ক্লাস করতে পারে। যদিও Student রা Classroom এর ওপর কিছুটা নির্ভরশীল কিন্তু দিনশেষে Classroom এবং Student উভয়ই স্বাধীন সত্ত্বা।

আবার একটা Document এ অনেকগুলো Page থাকতে পারে সেক্ষেত্রে যদি আমি Document টাকেই না রাখি তাতে কিন্তু Page গুলোরও কোনো অস্তিত্ব থাকবে না কারণ পেজ গুলা Document টারই একটা অংশ ছিল। সেক্ষেত্রে এই অবস্থাটা কে আমরা বলতে পারি Composition। Composition implies ownership and one object is part of another object.

Composition কে একধরনের Aggregation ও বলা যাবে যা আবার সামগ্রিক ভাবে Association এরও একটা অংশ। এদের সম্পর্কে আরো বিস্তারিত জানতে হলে এই লিংকে গিয়ে দেখা যেতে পারে।
http://www.c-sharpcorner.com/UploadFile/ff2f08/association-aggregation-and-composition/

আমরা ইনহেরিটেন্স(Is-A) রিলেশান এবং এগ্রিগেশান(Has-A) রিলেশান অবজেক্ট গুলার মধ্যে সম্পর্ক বুঝাতে অবস্থা খাতিরে ব্যবহার করি, যখন যেখানে যেটার প্রয়োজন হয় এবং দুইটার কাজ কিন্তু আলাদা।

Inheritance vs Aggregation:

Inheritance আর Aggregation এই দুইটা যে আলাদা জিনিস উপরোক্ত ছবির মাধ্যমে তা দেখানো হল।

সবশেষে, এখন কেউ যদি জিজ্ঞেস করে যে OOP এর Fundamental Principles গুলো কি কি ? তাহলে আমরা উপরে উল্লেখিত ব্যাখ্যা গুলো থেকে বলতে পারি যে OOP এর Fundamental Principles গুলো হচ্ছে।
1. Encapsulation
2. Inheritance
3. Abstraction
4. Polymorphsim

তো এই ৪ টা পিলার এর ওপরই মূলত অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং কনসেপ্টটা দাঁড়িয়ে আছে। যাই হোক এই ছিল আমার OOP এর মূল বিষয়গুলা নিয়ে সূচনামূলক পোস্ট। আজকে এখানেই শেষ করি।

বিভিন্ন রেফারেন্স অনুসরণ করে আমার নিজের ভাষাতেই এই পোস্টটা লিখার চেস্টা করলাম। হয়তবা সেভাবে গুছিয়ে লিখতে পারিনাই তাই ভুল ত্রটি থাকলে ক্ষমা সুন্দর দৃষ্টিতে দেখবেন আর আমার ইচ্ছা আছে এটাকে একটা পূর্ণাঙ্গ সিরিজ হিসেবে দাড় করানোর । ইনশাল্লাহ্‌  সময় পেলে হয়তবা লিখে ফেলব একদিন।

ধন্যবাদ আপনাকে পোস্টটি সময় নিয়ে পড়ার জন্য ও সাথে থাকার জন্য। পোস্টটি কারো উপকারে আসলে কিংবা ভাল লাগলে অবশ্যই তা শেয়ার করতে ভুলবেন না কারণ শেয়ারিং করা মানেই হল অপরের জন্য কেয়ারিং করা আর পুরো লিখাটা পড়ার পর কমেন্ট বক্সে আপনার গঠনমূলক মন্তব্য স্বাগতম।  🙂


আমি যেসব লিংক থেকে এ বিষয় গুলো জানার চেস্টা করেছি তা নিচে দিলামঃ

http://jompesh.com/videos/1/1143/oop-lesson-1-introduction-to-object-oriented-programming

https://en.wikipedia.org/wiki/Object-oriented_programming
https://www.youtube.com/watch?v=5SWKbS87p98  ইত্যাদি এবং আরো কিছু ব্লগ ও ওয়েবসাইট
*পোস্টে উল্লেখিত ছবি গুলোর জন্য গুগল ইমেজ এর সাহায্য নেয়া হয়েছে

বাংলা



এখানে বাংলাতে লিখব

Algorithmic Thoughts : বাহিরের চাকচিক্য ভিতরের মন



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

‪#‎Thoughts‬

হার্ডডিস্ক পার্টিশান

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

মান টা অনেক টা এরক ম
/dev/sdb1 উইন্ডোজ এর জন্য NTFS টা 170.83GiB বা 174932 MiB (NTFS)[primary]
/dev/sdb3 উবুন্তু এর জন্য 184998 MiB(Mebabytes) বা 180.66GiB (EXT4)[primary]
sdb3 কে ডিলিট ক রে দিইয়ে এভাবে সেটাপ ক রেছি যাতে উইন্ডোজ আর উবুন্তু পাশাপাশি সুন্দর করে থাকতে পারে
{
/dev/sdb7 29998(30000)MB root / ext4
/dev/sdb8 19998(20000)MB swap
/dev/sdb9 143977MB /home ext4
}
/dev/sdb2 Extended space e অ্যালোকেটেড করে
/dev/sdb5 ব্যাকাপ এর জন্য 928.77 GiB বা 951061 (NTFS)[logical]
/dev/sdb6 গেমস এর জন্য NTFS টা 500.60GiB বা 512618 (NTFS)[logical]
Unallocated স্পেস 82.15GiB

৪ টার বেশী প্রাইমারী পার্টিশান একটা হার্ড ডিস্ক এ বানানো যায় না…এখেত্রে এক্সটেন্ডেড ভার্শান ক রে নেয়া প্রয়োজন

আর আরেকটা কথা এক্সটেন্ডেড পার্টিশান কেবল একটাই থাকতে পারে মনে হয়

 

মডুলাস অপারেটর নিয়ে কিছু কথা

ইদানিং প্রব্লেম সল্ভ করতে গিয়ে কিছু প্রব্লেম এ পড়লে দেখছি যে মডুলাস এর ধারনা টা নিজের কাছে ক্লিয়ার থাকলে অনেক সুবিধা হয় … তো নিজে শেখা পাশাপাশি শেয়ার করতে চাচ্ছি…আজকে একটু ঘাটাঘাটি করে যা শিখার চেস্টা করেছি তা…

স্ট্যাক ওভার ফ্লো এবং আরো কিছু ওয়েবসাইট ঘাটাঘাটি করে যা জানতে পেরেছি

61%9 বের করতে চাই আমি…তাই যা করা লাগবে আমার হাতে কলমে যদি চাই

61/9=6.77778
6.77778-6=0.77778
0.77778*9=7

এক্সাকটলি রিমেইন্ডারটাও ৭… সি তে করে দেখলে

আসলে ব্যাপারটা যেভাবে হয়

আমরা কি জানি ভাগের ক্ষেত্রে 61(ভাজ্য বা Divident)÷9(ভাজক বা Divisor)=6.77778(Quotient বা ভাগফল) আর ভাগশেষ হিসেবে যদি 7 আসে ঐটা হচ্ছে Ramainder

সি বা যেকোনো ল্যাংগুয়েজেই মডুলার অ্যারেথমেটিক বা মডুলো অপারেটর বা মডুলাস এর কাজ হচ্ছে ভাগশেষ টা বের ক রা…এটা হাতে কলমে করলে এভাবেও আসে আমার  এর আগের একটা ব্লগ পোস্টে উল্লেখ করেছি তা লিঙ্ক

কিন্তু ক্যলকুলেটর বা দ্রুততার সাথে নিজে থেকে করতে গেলে উপরের ফর্মুলাটার ব্যাখা অনেকটা এরকম

61/9=6.77778 অর্থাৎ divident/divisor=quotient
6.77778-6=0.77778 অর্থাৎ quotient বা ভাগফল – quotient বা ভাগফল এর ইন্টেজার মান
0.77778*9=7 তারপর প্রাপ্ত বিয়োগফল টাকে divisor বা ভাজক দিয়ে গুন করলেই আমাদের কাংখিত remainder বা ভাগশেষ পেয়ে গেলাম 😀

যে কারনে আমরা ইন্টেজার নিলাম কারন হচ্ছে মডুলার অ্যারেথমেটিক এর ক্ষেত্রে দশমিকের পরের মানগুলা ইগনোর করা হয়

সাধারনত Modulo দিয়ে আমরা অনেক কাজ করতে পারি

যেমনঃ একটা ভ্যালু থেকে কত মাস কতদিন হয়  সহজেই আমরা তা বের করতে পারি।
লজিকটা অনেকটা এরকম

1.Taking input from user
2.Month=input/30
3.Days=input%30

এখানে প্রাপ্ত ইনপুট কে ৩০ দিয়ে ভাগ দিলেই আমরা কত মাস তা পেয়ে যাচ্ছি(কারন এক মাস সমান ৩০ দিন) আর আরো  গভীরে যেতে হলে যেমন গুনে গুনে কত দিন হয় তা বের করতে হলে আমাদের রিমেইন্ডার বা ভাগশেষ লাগছে

আবার ধরলাম যে কেউ ২৪ ঘন্টা সময়ের হিসাবে 15:00 টা  সমান ১২ ঘন্টা হিসাবে কত তা জানতে চাচ্ছে এ ক্ষেত্রে ভাগশেষ এর নিয়ম ছাড়া কোনো গতি নেই

তো কিভাবে হবে তা দেখে নেই

১৫ কে ১২ দিয়ে ভাগ অর্থাৎ
15/12=1.25
1.25-1=0.25
0.25*12=3

অর্থাৎ ১৫টা সমান ৩ টা…কি বুঝলেন 😀 😀

সি তে মডুলাস এর কাজ

অনলাইন জাজ গুলোতে টুকি টাকি প্রব্লেম সলভ করতে গিয়ে আজকে এক জায়গায় আটকে গিয়েছি…সেটা হচ্ছে মডুলাস অপারেটর এর কাজ ভুলে গেছি…এমন না যে বুঝিনা বা পারিনা ব্যাপারটা কিন্তু নিজেকে আরেকবার ঝালাই করে নেবার প্রয়োজনে ব্লগ টা লিখে ফেল্লাম

ইন্টারনেট ঘেটে বিভিন্ন ব্লগ,সুবিন ভাইয়ের সি এর উপর বইটার ব্লগ,নিটন এর সবার জন্য সি এ দেখে ব্যাপারটা নিজের মত করে এখানে শেয়ার করলাম

মডুলাস % এর কাজ হচ্ছে ভাগশেষ বের করা এক কথায় বলতে গেলে এমনি ব্যাপারটা…তো কাজটা কেন করব আমরা…

ধরেন অড বা বিজোড় এবং জোড় বা ইভেন কিনা কোনো নাম্বার তা বের করব আমরা…

সেক্ষেত্রে, ধরেন ইনপুট নিলাম ৫ তাহলে মড ব্যবহার করে খুব সহজেই সম্ভব…যেমন কোনো সংখ্যা জোড় তখনি হয় যখন ২ দিয়ে ভাগ দিলে তা নিঃশেষে বিভাজ্য হয় মানে এ ভাগশেষ ০ (শূন্য) হয় আর তানাহলে সংখ্যাটি  বেজোড় হয়

যেমনঃ নিচের ছবিটিতে ৫ জোড় না বেজোড় কিভাবে হয় তা দেখানো হ ল
modulus

আর সি তে তার কোড হচ্ছে এরকম

 

AdMOB.CoM[চলুন আয় করি ওয়াপ সাইট থেকে…

আমরা ওয়েবে Adsense এর সাথে অনেকেই পরিচিত তবে ওয়াপ সাইট যাদের আছে তারা Adsense কোড ওয়াপ সাইটে পেস্ট ক রলে ও ওইটা কাজ ক রবে না…বরং সাইট Parse ই হবে না অনেক মোবাইল ব্রাউজারের ক্ষেত্রে যদিও Adsense এর mobile Version আছে |আর Adsense Mobile বাংলাদেশের ইউজারদের ক্ষেত্রে এখনো কাজ ক রে না…

যাই হোক আমি admob এর ক থা বলছি এইটা ঠিক adsense এর মত ই তবে মোবাইলের ব্রাউজারের সাথে কমপ্যাটিবল । আর এইটার কোড অনেক ল্যাঙ্গুএজে ওয়াপ সাইট এ পেস্ট করা যায়…PHP,Ruby,VB ইত্যাদি ল্যাঙ্গুয়েজে।

আর admob এ সাইনাপ করা adsense এর মতো এতটা কঠিন না বরং সোজাই।Admob এ সাইন আপ এর জন্য শুধু যান http://www.admob.com এরপর গিয়ে রেজিস্টার ক রুন।।

রেজিস্টার এর সম য় Email Confirmation আসবে সেইটা কনফার্ম করে আপনার user id and password দিয়ে ঢুকুন ।এরপর আপনার সাইটের নাম আর URL দিয়ে সাইটের টাইপ সিলেক্ট করুন এরপ র ই আপনি Install Code Option পাবেন…এইক্ষেত্রে PHP(Fsock) কপি ক রে admob.php নামে একটি ফাইল করুন…এরপর সেখানে কোড পেস্ট ক রুন এরপর First যে লাইনে test লিখা আছে শুধু তাকে মুছে লিখুন live …

সবশেসে আপনার ওয়াপ সাইটের যেখানে অ্যাড দিতে চান সেখানে php এর include function দিয়ে admob.php ফাইল টা Add ক রে দিন।।

তারপ র সেভ করে সার্ভারে Upload করে দশ মিনিট অপেক্ষা করুন…কিছুক্ষন পরেই অ্যাড দেখতে পাবেন।

সমস্যাঃ
১.এক পেজে কেবল একটা অ্যাড ই দেয়া যায়।
২.ব্যান খাওয়ার সম্ভাবনা ১০০%
৩.বাংলাদেশ থেকে প্রাপ্ত ক্লিকে কম টাকা পাওয়া যায় USA থেকে সবচেয়ে বেশী

যেভাবে পে করেঃ
১.চেক দিয়ে
২.পেপল এ

সতর্কতাঃ
১.নিজের ওয়েব স্পেস থাকতে হবে মানে আপ্নাকেই admin হতে হবে অন্নের ফ্রি সাইট[যেমনঃwen.ru,peperontiy.com ইত্যাদি] হলে php কাজ ক রবে না সেখেত্রে html হিসেবে দিতে পারেন।

আসল কথা হ্ল আমি একবারো টাকা পাই নাই…দিয়ে রাখসি সাইটের মধ্যে url:http://www.ghurnon.mobi
আপ্নারা ট্রাই ক রতে পারেন আমার কাছে ভালই মনে হইসে..

YouTube এর ভিডিও Download Problem এর সমাধান….

আমরা সাধারন্ ত youtube এর ভিডিও online এ দেখি। তাছাড়া কয়েক্টি সাইট এ গিয়ে address bar এর youtube এর link দিলে download relay server হ য়ে আসে। আর ও অনেক রক ম system e youtube er ভিডিও নামা ন যায়।যেম নঃ youtube এর বিভিন্ন downloader পাওয়া যায়। তবে সেগুল র গতি প্রচলিত downloader যেম্ নঃ DAP, KAZAA……… ইত্যাদির থেকে কম।

সেই স মস্যার স মাধান নিয়ে আস ল মজিলার(Mozilla Firefox 2.0.0.13) এর এক অসাধারন plug in Download Helper.

এই download helper দিয়ে শুধু YouTube না ব রং Meta Cafe, Meta Tube, Pickle স হ FLV format এ আছে এরক ম সাইট এর Video নামা ন যায়।

এই Plugin ta সংগ্রহ ক রুন নিম্নে প্রদত্ত লিঙ্ক থেকে

LINK:https://addons.mozilla.org/en-US/firefox/addon/3006

বাংলাদেশের সৌন্দর্য

বাংলাদেশে যে দেখবার মতন অনেক কিছু আছে অনেকেই তা জানেন না। উল্লেখযোগ্য দর্শনীয় হচ্ছে বান্দরবান, রাঙামাটি, খাগড়াছড়ি ইত্যাদি পাহাড়ী এলাকা। নিচে বান্দরবানের মেঘলার পর্যটন স্পটের ছবি দেয়া হল।
86413