ਲੇਬਲ ਪ੍ਰਿੰਟਰ DPI ਬਾਰੇ ਝੂਠ ਬੋਲਦਾ ਹੈ
ਇੱਕ ਓਪਨ-ਸੋਰਸ Web Bluetooth ਡਰਾਈਵਰ ਦਿਖਾਉਂਦਾ ਹੈ ਕਿ Niimbot ਦਾ N1 ਲੇਬਲ ਪ੍ਰਿੰਟਰ, ਜਿਸ ਨੂੰ 300 dpi ਡਿਵਾਈਸ ਵਜੋਂ ਇਸ਼ਤਿਹਾਰ ਦਿੱਤਾ ਗਿਆ ਹੈ, ਅਸਲ ਵਿੱਚ ਲਗਭਗ 203 dpi 'ਤੇ ਪ੍ਰਿੰਟ ਕਰਦਾ ਹੈ।
ਡਿਵੈਲਪਰ ਨੇ Niimbot ਦੀ ਮੋਬਾਈਲ ਐਪ ਦੀ ਵਰਤੋਂ ਕਰਨ ਦੀ ਬਜਾਏ ਸਿੱਧੇ ਵੈੱਬ ਪੇਜ ਤੋਂ ਪ੍ਰਿੰਟ ਕਰਨ ਲਈ ਇਹ ਡਰਾਈਵਰ ਬਣਾਇਆ। ਉਸਨੇ ਪ੍ਰੋਪਰਾਈਟਰੀ ਪ੍ਰੋਟੋਕੋਲ ਨੂੰ ਰਿਵਰਸ-ਇੰਜੀਨੀਅਰ ਕੀਤਾ ਅਤੇ Web Bluetooth API ਰਾਹੀਂ ਇਸਨੂੰ ਬ੍ਰਾਊਜ਼ਰਾਂ ਲਈ ਉਪਲਬਧ ਕਰਵਾਇਆ। ਅਜਿਹਾ ਕਰਦੇ ਹੋਏ, ਉਸਨੇ ਨਾ ਸਿਰਫ਼ ਇੱਕ ਗੁੰਮ ਹੋਈ ਵਿਸ਼ੇਸ਼ਤਾ ਦੀ ਖੋਜ ਕੀਤੀ, ਸਗੋਂ ਇੱਕ ਬੁਨਿਆਦੀ ਗਲਤ-ਵਿਸ਼ੇਸ਼ਤਾ (mis-specification) ਵੀ ਲੱਭੀ ਜੋ ਛੋਟੇ-ਪੱਧਰ ਦੀ ਪੈਕੇਜਿੰਗ, ਇਨਵੈਂਟਰੀ ਟੈਗਾਂ, ਜਾਂ ਸ਼ੌਕੀਆ ਪ੍ਰੋਜੈਕਟਾਂ ਨੂੰ ਖਰਾਬ ਕਰ ਸਕਦੀ ਹੈ ਜਿੱਥੇ ਸਟੀਕਤਾ ਮਹੱਤਵਪੂਰਨ ਹੁੰਦੀ ਹੈ।
ਗਲਤ-ਵਿਸ਼ੇਸ਼ਤਾ ਕਿਵੇਂ ਸਾਹਮਣੇ ਆਈ
Niimbot N1 ਨੂੰ 300 dpi ਪ੍ਰਿੰਟਰ ਵਜੋਂ ਮਾਰਕੀਟ ਕਰਦਾ ਹੈ, ਜਿਸਦਾ ਮਤਲਬ ਹੈ ਪ੍ਰਤੀ ਇੰਚ 300 ਡੌਟਸ। ਡਿਵੈਲਪਰ ਨੇ ਇੱਕ ਰੂਲਰ-ਸਕੇਲ ਤਸਵੀਰ ਅਤੇ ਇੱਕ ਨੰਬਰ ਵਾਲਾ ਟੈਸਟ ਪੈਟਰਨ ਪ੍ਰਿੰਟ ਕੀਤਾ, ਫਿਰ ਇੱਕ ਭੌਤਿਕ ਰੂਲਰ ਨਾਲ ਨਿਸ਼ਾਨਾਂ ਨੂੰ ਮਾਪਿਆ। ਗਣਨਾ ਲਗਾਤਾਰ ਲਗਭਗ 203 dpi ਵੱਲ ਇਸ਼ਾਰਾ ਕਰ ਰਹੀ ਸੀ, ਨਾ ਕਿ ਦਾਅਵਾ ਕੀਤੇ ਗਏ 300 ਵੱਲ।
ਹਾਰਡਵੇਅਰ ਡਰਾਈਵਰ ਲਿਖਣ ਤੋਂ ਚਾਰ ਮਿਹਨਤ ਨਾਲ ਮਿਲੇ ਸਬਕ
ਇੱਕ "ਸਫਲ" ਕੰਮ ਕੁਝ ਵੀ ਉਤਪਾਦਿਤ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਪ੍ਰਿੰਟਰ ਡੇਟਾ ਨੂੰ ਬਰਸਟਸ (bursts) ਵਿੱਚ ਸਟ੍ਰੀਮ ਕਰਦਾ ਹੈ। ਕੁਝ ਪਲੇਟਫਾਰਮਾਂ 'ਤੇ Bluetooth ਸਟੈਕ ਗਲਤੀ ਦੀ ਰਿਪੋਰਟ ਕੀਤੇ ਬਿਨਾਂ ਲਿਖਣ (write) ਦੀ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਰੋਕ ਦਿੰਦਾ ਹੈ। ਡਰਾਈਵਰ ਮੰਨ ਲੈਂਦਾ ਹੈ ਕਿ ਕੰਮ ਖਤਮ ਹੋ ਗਿਆ ਹੈ, ਫਿਰ ਵੀ ਲੇਬਲ ਖਾਲੀ ਜਾਂ ਅਧੂਰਾ ਨਿਕਲਦਾ ਹੈ। ਲੇਖਕ ਹੁਣ ਹਰ ਕੰਮ ਤੋਂ ਬਾਅਦ ਇਹ ਪੁਸ਼ਟੀ ਕਰਨ ਲਈ ਕਿ ਕੀ ਅਸਲ ਵਿੱਚ ਇੱਕ ਸ਼ੀਟ ਫੀਡ ਕੀਤੀ ਗਈ ਸੀ, ਪ੍ਰਿੰਟਰ ਦੇ ਭੌਤਿਕ ਪੇਜ ਕਾਊਂਟਰ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ।
ਡਾਕੂਮੈਂਟੇਸ਼ਨ ਅਸਲੀਅਤ ਨਹੀਂ ਹੈ। 300 dpi ਦਾ ਦਾਅਵਾ ਇੱਕ ਸਪੱਸ਼ਟ ਉਦਾਹਰਣ ਹੈ। ਸਪੈਸੀਫਿਕੇਸ਼ਨਾਂ ਅਤਿ-ਉਤਸ਼ਾਹੀ, ਪੁਰਾਣੀਆਂ, ਜਾਂ ਸਿਰਫ਼ ਗਲਤ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਜਦੋਂ ਵਿਜ਼ੂਅਲ ਫਿਡੈਲਿਟੀ (visual fidelity) ਮਹੱਤਵਪੂਰਨ ਹੋਵੇ, ਤਾਂ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਖੁਦ ਮਹੱਤਵਪੂਰਨ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਮਾਪਣਾ ਚਾਹੀਦਾ ਹੈ।
ਭੌਤਿਕ ਨਿਸ਼ਾਨ "ਫਿਟ" ਟੈਸਟਾਂ ਨਾਲੋਂ ਬਿਹਤਰ ਹਨ। ਇਹ ਦੇਖਣ ਲਈ ਕਿ ਕੀ ਕੋਈ ਤਸਵੀਰ ਲੇਬਲ ਖੇਤਰ ਵਿੱਚ ਫਿੱਟ ਬੈਠਦੀ ਹੈ, ਉਸਨੂੰ ਪ੍ਰਿੰਟ ਕਰਨਾ ਰੈਜ਼ੋਲੂਸ਼ਨ, ਪ੍ਰਿੰਟਹੈੱਡ ਦੀ ਚੌੜਾਈ, ਜਾਂ ਆਫਸੈੱਟ ਗਲਤੀਆਂ ਨੂੰ ਛੁਪਾ ਦਿੰਦਾ ਹੈ। ਇੱਕ ਜਾਣੇ-ਪਛਾਣੇ ਜਿਓਮੈਟ੍ਰਿਕ ਨਿਸ਼ਾਨ ਨੂੰ ਪ੍ਰਿੰਟ ਕਰਨਾ ਅਤੇ ਉਸਦੇ ਸਹੀ ਸਥਾਨ ਨੂੰ ਮਾਪਣਾ ਡਿਵਾਈਸ ਦੇ ਅਸਲ ਵਿਵਹਾਰ ਨੂੰ ਪ੍ਰਗਟ ਕਰਦਾ ਹੈ।
ਇੱਕ ਪ੍ਰੋਟੋਕੋਲ ਵਿਆਕਰਣ ਦਾ ਵਰਣਨ ਕਰਦਾ ਹੈ, ਹਾਰਡਵੇਅਰ ਦੇ ਸੁਭਾਅ ਦਾ ਨਹੀਂ। ਦੋ ਪ੍ਰਿੰਟਰ ਇੱਕੋ ਜਿਹੇ ਕਮਾਂਡ ਸੈੱਟ ਸਾਂਝੇ ਕਰ ਸਕਦੇ ਹਨ ਪਰ ਫਿਰ ਵੀ ਵੱਖਰੇ ਤਰੀਕੇ ਨਾਲ ਵਿਵਹਾਰ ਕਰ ਸਕਦੇ ਹਨ—ਇੱਕ ਤੇਜ਼ ਪੇਜ ਰੀਪੀਟਸ ਨੂੰ ਸੰਭਾਲਦਾ ਹੈ, ਦੂਜਾ ਰੁਕ ਜਾਂਦਾ ਹੈ। ਡਰਾਈਵਰ ਸਿਰਫ਼ ਪ੍ਰੋਟੋਕੋਲ ਦਸਤਾਵੇਜ਼ਾਂ ਦੇ ਅਧਾਰ 'ਤੇ ਇੱਕੋ ਜਿਹੇ ਪ੍ਰਦਰਸ਼ਨ ਦਾ ਅਨੁਮਾਨ ਨਹੀਂ ਲਗਾ ਸਕਦਾ; ਹਰੇਕ ਮਾਡਲ ਨੂੰ ਅਸਲ-ਦੁਨੀਆ ਦੇ ਟੈਸਟ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।
ਇਹ ਡਰਾਈਵਰ ਕਿਉਂ ਮਹੱਤਵਪੂਰਨ ਹੈ
ਡਰਾਈਵਰ ਕਦੇ ਵੀ ਸਭ ਕੁਝ ਜਾਣਨ ਦਾ ਦਾਅਵਾ ਨਹੀਂ ਕਰਦਾ। ਜਦੋਂ ਵੀ ਇਹ ਪ੍ਰਿੰਟਰ ਤੋਂ ਪੜ੍ਹਨ ਦੀ ਬਜਾਏ ਕਿਸੇ ਮੁੱਲ (value) ਦਾ ਅਨੁਮਾਨ ਲਗਾਉਂਦਾ ਹੈ, ਤਾਂ ਇਹ ਉਸ ਫੀਲਡ ਨੂੰ ਇੱਕ ਅੰਦਾਜ਼ੇ ਵਜੋਂ ਫਲੈਗ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਹ ਪਾਰਦਰਸ਼ਤਾ ਉਹਨਾਂ ਚੁੱਪ ਰਹਿਣ ਵਾਲੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਰੋਕਦੀ ਹੈ ਜੋ ਹੋਰਨਾਂ ਹਾਲਤਾਂ ਵਿੱਚ ਡੀਬੱਗਿੰਗ ਦੇ ਕਈ ਘੰਟੇ ਖਰਾਬ ਕਰ ਸਕਦੀਆਂ ਹਨ।
ਡਰਾਈਵਰ ਪ੍ਰਾਪਤ ਕਰਨਾ
ਡਰਾਈਵਰ Chrome ਜਾਂ Edge ਵਿੱਚ ਚੱਲਦਾ ਹੈ ਅਤੇ ਇਸਨੂੰ ਸਿਰਫ਼ ਇੱਕ Bluetooth-ਸਮਰੱਥ ਡਿਵਾਈਸ ਅਤੇ ਇੱਕ ਸਮਰਥਿਤ Niimbot ਪ੍ਰਿੰਟਰ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਲਾਈਵ ਡੈਮੋ ਇੱਥੇ ਅਜ਼ਮਾਓ:
https://iscarelli.github.io/niimbot-web-bluetooth/demo/
ਸੋਰਸ ਕੋਡ GitHub 'ਤੇ ਹੈ, ਜਿੱਥੇ ਭਾਈਚਾਰਾ ਮਾਡਲ ਡੇਟਾ ਵਿੱਚ ਯੋਗਦਾਨ ਪਾ ਸਕਦਾ ਹੈ, ਬੱਗਾਂ ਨੂੰ ਠੀਕ ਕਰ ਸਕਦਾ ਹੈ, ਜਾਂ ਹੋਰ ਬ੍ਰਾਊਜ਼ਰਾਂ ਲਈ ਡਰਾਈਵਰ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾ ਸਕਦਾ ਹੈ:
https://github.com/iscarelli/niimbot-web-bluetooth
Niimbot ਦੇ ਮਾਲਕ ਮਾਡਲ ਡੇਟਾਬੇਸ ਨੂੰ ਭਰਨ ਵਿੱਚ ਮਦਦ ਕਰ ਸਕਦੇ ਹਨ; ਇਸ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਲਗਭਗ ਦਸ ਮਿੰਟ ਅਤੇ ਦੋ ਲੇਬਲ ਲੱਗਦੇ ਹਨ।
ਵਿਰੋਧੀ ਵਿਚਾਰ
ਜਦੋਂ ਤੱਕ ਕੰਪਨੀ ਇਸ ਅੰਤਰ ਨੂੰ ਸਪੱਸ਼ਟ ਨਹੀਂ ਕਰਦੀ, ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਮਾਪੇ ਗਏ ਮੁੱਲ (measured value) ਨਾਲ ਹੀ ਕੰਮ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ।
ਸਿੱਖਿਆ ਸਧਾਰਨ ਹੈ: ਵੈੱਬ ਪੇਜ ਤੋਂ ਤੁਹਾਡੇ ਦੁਆਰਾ ਕਾਲ ਕੀਤਾ ਗਿਆ ਹਾਰਡਵੇਅਰ ਉਹ ਨਹੀਂ ਕਰ ਸਕਦਾ ਜੋ ਇਸਦੀ ਸਪੈਕ ਸ਼ੀਟ ਵਾਅਦਾ ਕਰਦੀ ਹੈ। ਮਹੱਤਵਪੂਰਨ ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰੋ, ਚੁੱਪ ਰਹਿਣ ਵਾਲੀਆਂ ਅਸਫਲਤਾਵਾਂ ਦੀ ਉਮੀਦ ਰੱਖੋ, ਅਤੇ ਅਜਿਹੇ ਡਰਾਈਵਰ ਚੁਣੋ ਜੋ ਅਨਿਸ਼ਚਿਤਤਾ ਨੂੰ ਛੁਪਾਉਣ ਦੀ ਬਜਾਏ ਉਸਨੂੰ ਪ੍ਰਗਟ ਕਰਨ।
