লেবেল প্রিন্টারটি DPI সম্পর্কে মিথ্যা বলছে
একটি ওপেন-সোর্স Web Bluetooth ড্রাইভার দেখায় যে Niimbot-এর N1 লেবেল প্রিন্টারটি, যা ৩০০ dpi ডিভাইসের বিজ্ঞাপন দিয়েছিল, আসলে প্রায় ২০৩ dpi-তে প্রিন্ট করে।
ডেভেলপার Niimbot-এর মোবাইল অ্যাপ ব্যবহার না করে সরাসরি একটি ওয়েব পেজ থেকে প্রিন্ট করার জন্য এই ড্রাইভারটি তৈরি করেছেন। তিনি এর প্রোপাইটরি প্রোটোকলটি রিভার্স-ইঞ্জিনিয়ারিং করেছেন এবং Web Bluetooth API-এর মাধ্যমে এটি ব্রাউজারের জন্য উন্মুক্ত করেছেন। এটি করার সময়, তিনি কেবল একটি অনুপস্থিত ফিচারই নয়, বরং একটি মৌলিক ভুল স্পেসিফিকেশনও আবিষ্কার করেন যা ছোট ব্যাচের প্যাকেজিং, ইনভেন্টরি ট্যাগ বা শখের প্রজেক্টগুলোর ক্ষেত্রে সমস্যা সৃষ্টি করতে পারে যেখানে নির্ভুলতা অত্যন্ত গুরুত্বপূর্ণ।
কীভাবে এই ভুল স্পেসিফিকেশনটি সামনে এল
Niimbot N1-কে ৩০০ dpi প্রিন্টার হিসেবে বাজারজাত করে, যার অর্থ প্রতি ইঞ্চিতে ৩০০টি ডট। ডেভেলপার একটি রুলার-স্কেল ইমেজ এবং একটি নম্বরযুক্ত টেস্ট প্যাটার্ন প্রিন্ট করেন, তারপর একটি ফিজিক্যাল রুলার দিয়ে চিহ্নগুলো পরিমাপ করেন। গণনার ফলাফল বারবার প্রায় ২০৩ dpi নির্দেশ করছিল, দাবি করা ৩০০ dpi নয়।
একটি হার্ডওয়্যার ড্রাইভার লেখার মাধ্যমে অর্জিত চারটি কঠিন শিক্ষা
একটি "সফল" কাজ কিছুই উৎপাদন নাও করতে পারে। প্রিন্টারটি bursts-এ ডেটা স্ট্রিম করে। কিছু প্ল্যাটফর্মে Bluetooth stack কোনো ত্রুটি রিপোর্ট না করেই একটি 'write' অপারেশন বাদ দিয়ে দেয়। ড্রাইভার ধরে নেয় যে কাজটি শেষ হয়েছে, কিন্তু লেবেলটি খালি বা অসম্পূর্ণভাবে বেরিয়ে আসে। লেখক এখন প্রতিটি কাজের পর প্রিন্টারের ফিজিক্যাল পেজ কাউন্টার দেখে নিশ্চিত হন যে একটি শিট আসলে প্রবেশ করেছে কি না।
ডকুমেন্টেশন মানেই বাস্তবতা নয়। ৩০০ dpi-এর দাবিটি এর একটি স্পষ্ট উদাহরণ। স্পেসিফিকেশন আশাবাদী, সেকেলে বা স্রেফ ভুল হতে পারে। যখন ভিজ্যুয়াল ফিডেলিটি (visual fidelity) গুরুত্বপূর্ণ হয়, তখন ডেভেলপারদের অবশ্যই গুরুত্বপূর্ণ প্যারামিটারগুলো নিজে পরিমাপ করতে হবে।
"ফিট" টেস্টের চেয়ে ফিজিক্যাল মার্ক বা চিহ্ন বেশি কার্যকর। লেবেল এরিয়ার সাথে ইমেজটি ঠিকমতো বসছে কি না তা দেখার জন্য প্রিন্ট করা হলে রেজোলিউশন, প্রিন্টহেড উইডথ বা অফসেট ত্রুটিগুলো ঢাকা পড়ে যায়। একটি পরিচিত জ্যামিতিক চিহ্ন প্রিন্ট করা এবং তার সঠিক অবস্থান পরিমাপ করা ডিভাইসের প্রকৃত আচরণ প্রকাশ করে।
একটি প্রোটোকল ব্যাকরণ বর্ণনা করে, হার্ডওয়্যারের মেজাজ নয়। দুটি প্রিন্টারের কমান্ড সেট একই হতে পারে, তবুও তাদের আচরণ ভিন্ন হতে পারে—একটি দ্রুত পেজ রিপিট সামলাতে পারে, অন্যটি আটকে যেতে পারে। শুধুমাত্র প্রোটোকল ডকুমেন্টের ওপর ভিত্তি করে ড্রাইভার একই পারফরম্যান্স আশা করতে পারে না; প্রতিটি মডেলের বাস্তবমুখী পরীক্ষার প্রয়োজন।
কেন এই ড্রাইভারটি গুরুত্বপূর্ণ
এই ড্রাইভারটি কখনোই সবকিছু জানার ভান করে না। যখনই এটি প্রিন্টার থেকে সরাসরি না পড়ে কোনো মান অনুমান (infer) করে, তখনই এটি সেই ফিল্ডটিকে একটি 'অনুমান' (guess) হিসেবে চিহ্নিত করে। এই স্বচ্ছতা সেই নীরব ত্রুটিগুলোকে থামিয়ে দেয় যা অন্যথায় ডিবাগিংয়ে ঘণ্টার পর ঘণ্টা সময় নষ্ট করত।
ড্রাইভারটি কীভাবে পাবেন
ড্রাইভারটি Chrome বা Edge-এ চলে এবং এর জন্য কেবল একটি Bluetooth-সক্ষম ডিভাইস এবং একটি সমর্থিত Niimbot প্রিন্টার প্রয়োজন। লাইভ ডেমোটি এখানে চেষ্টা করুন:
https://iscarelli.github.io/niimbot-web-bluetooth/demo/
সোর্স কোডটি GitHub-এ রয়েছে, যেখানে কমিউনিটি মডেল ডেটা প্রদান করতে পারে, বাগ ঠিক করতে পারে বা অন্যান্য ব্রাউজারের জন্য ড্রাইভারটি মানিয়ে নিতে পারে:
https://github.com/iscarelli/niimbot-web-bluetooth
Niimbot মালিকরা মডেল ডেটাবেস তৈরিতে সাহায্য করতে পারেন; এই প্রক্রিয়াটি সম্পন্ন করতে প্রায় দশ মিনিট এবং দুটি লেবেল প্রয়োজন।
পাল্টা যুক্তি
কোম্পানিটি যতক্ষণ না এই অসঙ্গতি স্পষ্ট করছে, ততক্ষণ ডেভেলপারদের পরিমাপকৃত মান দিয়েই কাজ করতে হবে।
মূল শিক্ষাটি সহজ: আপনি একটি ওয়েব পেজ থেকে যে হার্ডওয়্যারটি কল করছেন, সেটি তার স্পেক শিটে যা প্রতিশ্রুতি দেয় তা নাও করতে পারে। গুরুত্বপূর্ণ প্যারামিটারগুলো যাচাই করুন, নীরব ব্যর্থতার জন্য প্রস্তুত থাকুন এবং এমন ড্রাইভার বেছে নিন যা অনিশ্চয়তাকে লুকানোর পরিবর্তে প্রকাশ করে।
