લેબલ પ્રિન્ટર DPI વિશે ખોટું બોલે છે
એક ઓપન-સોર્સ Web Bluetooth ડ્રાઈવર દર્શાવે છે કે Niimbot નું N1 લેબલ પ્રિન્ટર, જે 300 dpi ઉપકરણ તરીકે જાહેરાત કરવામાં આવે છે, તે વાસ્તવમાં અંદાજે 203 dpi પર પ્રિન્ટ કરે છે.
ડેવલપરે Niimbot ની મોબાઈલ એપનો ઉપયોગ કરવાને બદલે સીધું વેબ પેજ પરથી પ્રિન્ટ કરવા માટે આ ડ્રાઈવર બનાવ્યું છે. તેણે પ્રોપ્રાઈટરી પ્રોટોકોલનું રિવર્સ-એન્જિનિયરિંગ કર્યું અને Web Bluetooth API દ્વારા તેને બ્રાઉઝર્સ માટે ઉપલબ્ધ કરાવ્યું. આમ કરવાથી, તેણે માત્ર એક ખૂટતી સુવિધા જ નહીં, પરંતુ એક મૂળભૂત ખોટી વિશિષ્ટતા (mis-specification) શોધી કાઢી, જે નાના પાયે પેકેજિંગ, ઇન્વેન્ટરી ટેગ્સ અથવા ચોકસાઈ મહત્વની હોય તેવા શોખના પ્રોજેક્ટ્સને બગાડી શકે છે.
આ ખોટી વિશિષ્ટતા કેવી રીતે સામે આવી
Niimbot N1 ને 300 dpi પ્રિન્ટર તરીકે માર્કેટ કરે છે, જેનો અર્થ પ્રતિ ઇંચ 300 ડોટ્સ થાય છે. ડેવલપરે ફૂટપટ્ટીના સ્કેલવાળી ઈમેજ અને નંબરવાળું ટેસ્ટ પેટર્ન પ્રિન્ટ કર્યું, અને પછી ભૌતિક ફૂટપટ્ટીથી નિશાનો માપ્યા. ગણતરી સતત અંદાજે 203 dpi તરફ નિર્દેશ કરતી હતી, જે દાવો કરવામાં આવેલા 300 dpi થી અલગ હતી.
હાર્ડવેર ડ્રાઈવર લખવાથી મળેલા ચાર કઠિન પાઠ
એક "સફળ" કાર્ય કંઈ જ ઉત્પન્ન ન કરી શકે. પ્રિન્ટર ડેટાને બર્સ્ટમાં સ્ટ્રીમ કરે છે. કેટલાક પ્લેટફોર્મ પર Bluetooth stack ભૂલની જાણ કર્યા વિના 'write' ડેટા ડ્રોપ કરી દે છે. ડ્રાઈવર માની લે છે કે કાર્ય પૂર્ણ થયું છે, છતાં લેબલ ખાલી અથવા અધૂરું આવે છે. લેખક હવે દરેક કાર્ય પછી શીટ ખરેખર ફીડ થઈ છે કે નહીં તે ચકાસવા માટે પ્રિન્ટરના ભૌતિક પેજ કાઉન્ટરને વાંચે છે.
દસ્તાવેજીકરણ (Documentation) વાસ્તવિકતા નથી. 300 dpi નો દાવો તેનું સ્પષ્ટ ઉદાહરણ છે. સ્પેસિફિકેશન્સ આશાવાદી, જૂના અથવા ફક્ત ખોટા હોઈ શકે છે. જ્યારે વિઝ્યુઅલ ફિડેલિટી (ચોકસાઈ) મહત્વની હોય ત્યારે ડેવલપર્સે મહત્વના પેરામીટર્સ જાતે માપવા જોઈએ.
ભૌતિક નિશાનો "ફિટ" ટેસ્ટ કરતા વધુ સારા છે. ઈમેજ લેબલ એરિયામાં ફિટ થાય છે કે નહીં તે જોવા માટે પ્રિન્ટ કરવાથી રિઝોલ્યુશન, પ્રિન્ટહેડની પહોળાઈ અથવા ઓફસેટ ભૂલો છુપાઈ જાય છે. જાણીતા ભૌમિતિક નિશાનને પ્રિન્ટ કરીને તેનું ચોક્કસ સ્થાન માપવાથી ઉપકરણનું સાચું વર્તન જાણી શકાય છે.
પ્રોટોકોલ વ્યાકરણનું વર્ણન કરે છે, હાર્ડવેરના સ્વભાવનું નહીં. બે પ્રિન્ટર સમાન કમાન્ડ સેટ ધરાવી શકે છે છતાં અલગ રીતે વર્તે છે—એક ઝડપી પેજ રિપીટ્સ હેન્ડલ કરે છે, તો બીજું અટકી જાય છે. ડ્રાઈવર માત્ર પ્રોટોકોલ દસ્તાવેજોના આધારે સમાન કામગીરીની ધારણા કરી શકતું નથી; દરેક મોડેલને વાસ્તવિક દુનિયાના પરીક્ષણની જરૂર છે.
આ ડ્રાઈવર શા માટે મહત્વપૂર્ણ છે
ડ્રાઈવર ક્યારેય બધું જ જાણવાનો ડોળ કરતું નથી. જ્યારે પણ તે પ્રિન્ટર પાસેથી વાંચવાને બદલે કોઈ મૂલ્યનો અંદાજ લગાવે છે, ત્યારે તે તે ફિલ્ડને 'અંદાજ' (guess) તરીકે ફ્લેગ કરે છે. આ પારદર્શિતા એવા શાંત ભૂલોને અટકાવે છે જે અન્યથા ડિબગિંગમાં કલાકોનો સમય બગાડી શકે છે.
ડ્રાઈવર કેવી રીતે મેળવવું
ડ્રાઈવર Chrome અથવા Edge માં ચાલે છે અને તેને ફક્ત Bluetooth-સક્ષમ ઉપકરણ અને સપોર્ટેડ Niimbot પ્રિન્ટરની જરૂર છે. લાઈવ ડેમો અહીં અજમાવો:
https://iscarelli.github.io/niimbot-web-bluetooth/demo/
સોર્સ કોડ GitHub પર છે, જ્યાં સમુદાય મોડેલ ડેટામાં યોગદાન આપી શકે છે, બગ્સ સુધારી શકે છે અથવા અન્ય બ્રાઉઝર્સ માટે ડ્રાઈવરને અનુકૂળ બનાવી શકે છે:
https://github.com/iscarelli/niimbot-web-bluetooth
Niimbot ના માલિકો મોડેલ ડેટાબેઝ ભરવામાં મદદ કરી શકે છે; આ પ્રક્રિયામાં લગભગ દસ મિનિટ અને બે લેબલ લાગે છે.
વિરોધ પક્ષ
જ્યાં સુધી કંપની આ વિસંગતતા સ્પષ્ટ ન કરે ત્યાં સુધી, ડેવલપર્સે માપેલા મૂલ્ય સાથે કામ કરવું પડશે.
બોધપાઠ સરળ છે: તમે વેબ પેજ પરથી જે હાર્ડવેરને કોલ કરો છો તે તેની સ્પેક શીટ જે વચન આપે છે તે મુજબ કામ ન પણ કરે. મહત્વપૂર્ણ પેરામીટર્સ ચકાસો, શાંત નિષ્ફળતાઓ (silent failures) ની અપેક્ષા રાખો, અને એવા ડ્રાઈવર્સ પસંદ કરો જે અનિશ્ચિતતાને છુપાવવાને બદલે તેને ખુલ્લી પાડે.
