ব্লকচেইন ও ক্রিপ্টোকারেন্সি

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

https://www.iayon.com/blockchain-bitcoin/

Advertisements

সহজ কথায়, MVC এমভিসি (মডেল-ভিউ-কন্ট্রোলার) প্যাটার্ণ

Originally posted on : Abu Ashraf Masnun | whovian …

MVC

এমভিসি বা মডেল-ভিউ-কন্ট্রোলার খুবই জনপ্রিয় একটি প্যাটার্ন । বিশেষ করে যদি আপনি ওয়েব নিয়ে কাজ করেন তাহলে হয়তো ইতোমধ্যে এমভিসি শব্দটির সাথে পরিচিত হয়েছেন । Trygve Reenskaug নামের এক ভদ্রলোক এই প্যাটার্নটির জনক। ভদ্রলোকের নামের বানানটি যতটা না জটিল, তার আইডিয়াটা ঠিক ততটাই সহজবোধ্য । এমভিসি প্যাটার্নের মূল বক্তব্য হলো এই প্যাটার্নে তিনটি কম্পোনেন্ট থাকবে – একটি মডেল যেটি ডাটা নিয়ে কাজ করবে, একটি ভিউ যেটার কাজ হবে মডেলকে ভিজ্যুয়ালাইজ করা এবং একটি কন্ট্রোলার যেটি ব্যবহারকারী এবং সিস্টেমের মধ্য সমন্বয়কারী হিসেবে কাজ করে । Reenskaug এমভিসি প্যাটার্নের উপর একটি ওয়েব পেইজ মেইনটেইন করেন যেখানে এমভিসি এর উপরে বিশদ বর্ননা পাওয়া যাবে – http://heim.ifi.uio.no/~trygver/themes/mvc/mvc-index.html

আমরা যদি এমভিসি কম্পোনেন্টগুলোর দিকে নজর দেই তাহলে দেখবো –

মডেল: মডেলের কাজই হলো ডাটা নিয়ে কাজ করা । মডেল হতে পারে একটি অবজেক্ট কিংবা অনেকগুলো অবজেক্ট এর একটি স্ট্রাকচার । একটি সিস্টেমের সব ধরণের নলেজ বা ডাটা মডেল দিয়ে রিপ্রেজেন্ট করা যায় । ক্ষেত্রবিশেষে মডেল তার অবস্থা পরিবর্তন হলে (যেমন: কোন ভ্যালুর মান পাল্টে গেলে) কন্ট্রোলার বা ভিউকে নোটিফাই করে যাতে প্রয়োজনীয় প্রসেসিং করা সম্ভব হয় । ওয়েবে সাধারণত এ ধরণের নোটিফিকেশন এর সুযোগ থাকে না ।

ভিউ: ভিউ এর কাজ হচ্ছে মডেলকে ব্যবহারকারীর সামনে তুলে ধরা । সাধারণত ভিউ মডেল থেকে ডাটা নিয়ে সেটাকে ব্যবহারকারীর কাছে সহজবোধ্য রূপে তুলে ধরে ।

কন্ট্রোলার: কন্ট্রোলার ব্যবহারকারীর কাছ থেকে তথ্য সংগ্রহ করে আবার ব্যবহারকারীর প্রয়োজনমত ভিউ উপস্থাপন করে । কন্ট্রোলারই বলে দেয় ভিউ কোন মডেল থেকে ডাটা নিয়ে কিভাবে উপস্থাপন করবে । এছাড়াও কন্ট্রোলার মডেলে নানা ধরণের পরিবর্তন করতে পারে প্রয়োজনমত ।

এই প্যাটার্নটি অনেক ধরণের সফটওয়্যার ডিজাইন করার ক্ষেত্রেই ব্যবহারযোগ্য । ডেস্কটপ, মোবাইল কিংবা ওয়েব এ্যাপ্লিকেশন – সব জায়গাতেই এই প্যাটার্নটি কমবেশী প্রচলিত । তবে অন্যান্য প্ল্যাটফর্মের চাইতে ওয়েবে বোধহয় একটু বেশীই পরিচিত ।

উদাহরণ হিসেবে আমরা যদি একটি সাদামাটা স্ট্যাটিক ওয়েব পেইজের কথা চিন্তা করি তাহলে দেখবো –

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

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

# মডেল: সকল স্টুডেন্টদের তথ্য । সম্ভবত এই তথ্য একত্রে একটি ডাটাবেইজে সংরক্ষিত থাকবে এবং মডেল ব্যবহার করে আমরা এই তথ্য এ্যাক্সেস করতে পারবো ।
# ভিউ: স্টুডেন্টদের তালিকা যেটি কিনা এইচটিএমএল হিসেবে একটি সুন্দর টেবিলে রোল নম্বরের ক্রমানুযায়ী প্রদর্শিত হবে ।
# কন্ট্রোলার: কন্ট্রোলার জানবে কোন মডেল থেকে স্টুডেন্টদের ডাটা সংগ্রহ করতে হবে, রোল নম্বর অনুযায়ী কিভাবে সাজাতে হবে অতপর কিভাবে এই ডাটা থেকে ব্রাউজারে প্রদর্শনযোগ্য এইচটিএমএল কোড আউটপুট করা যাবে ।

আমরা যদি হালের জনপ্রিয় পিএইচপি ফ্রেমওয়ার্ক লারাভেলের মত করে চিন্তা করি তাহলে দেখবো –

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

যেমন: যখন একজন ব্যবহারকারী /students/all – এই ঠিকানা ভিজিট করবেন তখন সব স্টুডেন্টদের তালিকা দেখাতে হবে । যখনই ওয়েব এ্যাপ্লিকশেন এই রিকোয়েস্টটি পায় তখন সে কন্ট্রোলারকে জানায় যে ব্যবহারকারী সব স্টুডেন্টদের তালিকা দেখতে চাচ্ছে । কন্ট্রোলার তখন ঝটপট Student মডেল এর কাছ থেকে সব স্টুডেন্ট এর তথ্য সংগ্রহ করে নেয় । এরপর সেগুলোকে রোল অনুযায়ী সাজিয়ে পাঠিয়ে দেয় ভিউ এর কাছে । ভিউ তখন মডেল হতে পাওয়া ডাটা সুন্দর করে এইচটিএমএল হিসেবে আউটপুট দিয়ে দেয় ।

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

নাল অবজেক্ট প্যাটার্ন (Null Object Pattern)

/Code/Blog

ইনি সাহেব আমাদের বলেন যে : Just because I don’t have anything and don’t do anything, it does not mean that I am not smart.  By not having anything, I don’t take up much resource and can be shared among many.  By not doing anything, I am doing the right thing. বেশ ভাব নিয়ে চলেন এই প্যাটার্ন । চলুন দেখি ভাব নেয়ার কি কি আছে ইনি সাহেবের 😛

কি : কোনও কাঙ্ক্ষিত অবজেক্ট না পাওয়া গেলে অর্থাৎ নাল হলে তার রিপ্লেসমেন্ট হিসেবে নাল অবজেক্ট ব্যবহৃত হয় । যেমন আমার খোজে আমার বাসায় একজন আসে এবং আমি যদি নাল হয়ে থাকি, মানে বাসায় না থাকি এবং যদি আমার ছোট ভাই বলে এখন ভাইয়া বাসায় নাই , সন্ধ্যার পর আসবে এক্ষেত্রে আমার ছোট ভাই হচ্ছে নাল অবজেক্ট যে কিনা আমার নাল হওয়াটাকে মানে আমার বাসায় না থাকাটাকে বর্ণনা করছে ।

উদাহরণঃ  যেমন কেউ যদি এপ্লিকেশন থেকে যদু নামে একজন ভদ্রলোকের ইনফরমেশন দেখতে চায়…

View original post 913 more words