এমন একটি ড্যাশবোর্ড যা সত্যিই কিছু করে।
বেশিরভাগ ড্যাশবোর্ড স্বাভাবিকভাবেই শুধু-পঠনযোগ্য: সেগুলো আপনাকে একটি সংখ্যা দেখায় এবং সেটির ওপর কাজ করতে অন্য কোথাও যেতে বাদ দিয়ে দেয়। dash-b-এর একটি টাইলে বোতাম থাকতে পারে, এবং সেটি চাপলে একটি সারি লেখা হয়, হালনাগাদ হয়, বা আপনার নিজের টেবিল থেকে তৈরি একটি ফর্ম খোলে।
দুটি টাইল
একটি বোতাম, বা একটি ফর্ম
কাজ
আপনার বেছে নেওয়া লেবেলসহ একটি বোতাম। এটি আপনার নিজের কোনো টেবিলের বিরুদ্ধে একটি নির্দিষ্ট অপারেশন চালায় — আজকের আয় ব্যাংকে জমা হয়েছে চিহ্নিত করা, একটি শিফট যোগ করা, একটি টিকিট বন্ধ করা। কিছু টাইপ করার নেই, এক চাপ।
ডেটা ফর্ম
একই বিষয়, যখন অপারেশনের বিবরণ প্রয়োজন। ফিল্ডগুলো ডিজাইনে ঘোষিত কোনো কিছু থেকে নয়, বরং টেবিলের নিজস্ব স্কিমা থেকে আঁকা হয়, তাই আপনি যে কলামের নাম বদলান সেটি ফর্মটি বদলে দেয় এবং যে কলাম মুছে ফেলেন সেটির জন্য আর জিজ্ঞেস করা হয় না।
অ্যাকশন কী
তিনটি কী, আর চতুর্থ নেই
একটি অ্যাকশন একটি অপারেশনের নাম নির্দিষ্ট করে, সেটি কীসের ওপর চলে তা নির্দিষ্ট করে, এবং প্যারামিটার পাঠায়। এটিই পুরো শব্দভাণ্ডার:
- কমান্ড হলো একটি রেজিস্ট্রির সূচক, যেখানে শুধু dash-b-এর নিজস্ব কোড যোগ করতে পারে। একটি ডিজাইন নতুন কমান্ড তৈরি করতে পারে না।
- বাইন্ডিং হলো একটি নাম, যা বোতাম চাপার সময় আপনার অ্যাকাউন্টে থাকা ডকুমেন্টের বিপরীতে মীমাংসা হয়। কেউ আপনাকে এমন একটি ডিজাইন পাঠালে যা এমন একটি টেবিলের নাম ধারণ করে যা আপনার নেই, সেটি থেমে যায় এবং সেটা জানিয়ে দেয়।
- প্যারামিটার হলো একটি আক্ষরিক মান, অথবা ফর্ম, টাইল বা চাপ থেকে পড়া একটি নাম-উল্লিখিত মান। এক স্তর গভীর, আর কিছুই নয়।
একটি অ্যাকশনে লেখা কোনো URL, হেডার, টোকেন বা রোল একটি অকেজো কী।
dash-b-এর কোনো কিছুই সেগুলো পড়ে না। একটি পরীক্ষা চারটি বহনকারী একটি অ্যাকশন প্রেরণ করে এবং যাচাই করে যে কোনোটিই হ্যান্ডলারে পৌঁছায়নি।
শব্দভাণ্ডারটি ইচ্ছাকৃতভাবে দুর্বল রাখা হয়েছে। প্যারামিটার ভাষায় যেকোনো অপারেটর যোগ করা মানে অপরিচিতরা একে অপরকে পাঠানো ফাইলের ভেতরে বসবাসকারী একটি রুলস ইঞ্জিনের দিকে এক ধাপ এগোনো, আর একটি ডিজাইন ফাইল অন্য কারো লজিক চালানোর জায়গা নয়।
একটি রাইট যে নিয়ম মানে
এর মধ্যে তিনটি dash-b-এর বাকি আচরণের বিপরীত
অজানা কমান্ড একটি স্পষ্ট ত্রুটি
অন্য সব জায়গায় অচেনা কী নীরবে উপেক্ষা করা হয়, কারণ একটি ডিজাইন নিজের নতুন সংস্করণের মুখোমুখি হলেও টিকে থাকা উচিত। এখানে নয়: নীরবে কিছুই না করা একটি লেখা সফল হওয়া লেখার মতোই দেখায়।
শুধু প্রকৃত চাপই গণ্য হয়
কোনো ব্যক্তি সত্যিই বোতামটি চেপেছেন কি না, তা সিদ্ধান্ত করে রানটাইম, কখনোই ডিজাইন নয়। যে ডিজাইন দাবি করে যে কোনো অঙ্গভঙ্গি ঘটেছে, সেটি প্রত্যাখ্যাত হয়।
যা কিছু ডেটা পরিবর্তন করে তা নিশ্চিতকরণ চায়
অপারেশনগুলো শুধু-পঠনযোগ্য, স্থানীয়, বা পরিবর্তনকারী। একটি পরিবর্তনকারী অপারেশন আগে জিজ্ঞেস করে — এবং জিজ্ঞেস না করার বিকল্প তার নেই — এবং এমন একটি কী দেওয়া হয় যা দ্বিগুণ চাপলেও একবারই কার্যকর হয়।
যেখানে এটি দেখা যায় না
রপ্তানি করা HTML পৃষ্ঠায় নয়
একটি ডিজাইন আলাদা পৃষ্ঠা হিসেবে রপ্তানি করলে বোতামগুলো তাতে থাকে না। একটি রপ্তানি dash-b-এর কোনো কোড চালায় না, তাই সেখানে একটি ফর্ম কারো লেখা সংগ্রহ করত কিন্তু পাঠানোর কোনো জায়গা থাকত না — যা একেবারে না দেওয়ার চেয়েও খারাপ। টাইলটি একটি ডিজাইনার ও অ্যাকাউন্ট ফিচার, এবং রপ্তানি সেটিকে বাদ দিয়ে সেটা জানিয়ে দেয়।
প্রকাশিত লিঙ্কের ক্ষেত্রেও একই কথা। একজন পাঠক কী দেখতে পাবেন এবং কী পাবেন না, তা নির্ধারণ করে টাইলটি কার ডেটার সঙ্গে বাঁধা — শেয়ারিং কীভাবে কাজ করে উভয় ক্ষেত্রই ব্যাখ্যা করে।
এর লেখার জন্য একটি টেবিল দরকার।
সেটি হতে পারে আপনার অ্যাকাউন্টের একটি টেবিল, অথবা আপনার নিজের ডেটাবেস যা আপনার হোস্ট করা একটি কানেক্টরের মাধ্যমে পৌঁছায় — সেক্ষেত্রে কোনো ডেটাবেস পাসওয়ার্ড কখনোই আমাদের কাছে পৌঁছায় না।