Сделав своё открытие, Крисель первым делом поставил в известность производителя. Неделю спустя, когда стало ясно, что техподдержка Xerox, как говорится, ни сном ни духом, и решением даже не пахнет, он — подталкиваемый страхом, что для кого-то ошибка может аукнуться большими проблемами, — подробно изложил всё на личном сайте. К этому моменту Дэвид уже провёл настоящее исследование и выяснил кое-какие новые детали. Так, стало ясно, что ошибке подвержены как самые старые модели WorkCentre, так и новейшие. И самое важное: удалось максимально сузить круг «подозреваемых». В ходе дискуссии с подключившимися к обсуждению энтузиастами Крисель пришёл к выводу, что винить следует алгоритм компрессии графики JBIG2, применённый в ксероксовских машинах.
JBIG2 — простая и удивительно эффективная штука. Умеющий сжимать графические файлы как с потерями, так и без, он особенно хорош (да и предназначен) для сканирования текстовых документов. Приступая к сжатию очередного файла, JBIG2 создаёт своего рода картотеку наиболее часто встречающихся графических образов, то есть, скажем, запоминает, как выглядит буква «A», буква «Б» и так далее. И каждый раз, встретив что-то похожее на «A», просто подставляет готовый образ из словаря. Такой подход не только позволяет сжимать сырые графические файлы в десятки раз, но и даёт поразительный эффект: с повышением качества исходного документа размер сжатого файла уменьшается! К сожалению, как выяснилось теперь, это может выйти боком.
Скажем, шестёрка на скане среднего качества похожа на восьмёрку — и если видимая разница между ними не слишком велика, то JBIG2 может её восьмёркой и заменить. А удастся, так и двойку поменяет на семёрку, и даже единичку — на тройку.
Xerox упиралась до последнего. Первым делом, когда Крисель таки достучался до руководства компании, его попытались убедить, что он имеет дело не с багом, а с «фичей» (поистине канонический ответ, так что простите за картинку, не удержался). Лишь после двух недель препирательств компания выпустила первый пресс-релиз, в котором предупредила пользователей об опасности и предложила обходной путь (выставить в свойствах компрессии «higher» вместо «normal», а также сканировать документы с качеством выше 200 DPI). Увы, Крисель немедленно воспроизвёл ошибку и при таких параметрах — и лишь 12 августа отпраздновал полную победу: Xerox признала баг и пообещала патч в ближайшем будущем.
Что ж, осталось всего ничего: достучаться до всех покупателей WorkCentre (а также WorkCentrePro, ColorQube, BookMark) и заставить их инсталлировать апдейт. Учитывая, что, по некоторым данным, треть компьютерного мира всё ещё работает под Windows XP, реально ли это?
Но аппараты Xerox — это даже не полбеды. JBIG2, стандартизованный тринадцать лет назад, запатентован (IBM, Mitsubishi), но условия лицензирования легки, так что алгоритм распространён чрезвычайно широко. Фактически он используется сегодня в тысячах программ и аппаратных продуктов по всему миру и всем платформам, от MS Windows до Linux. Простой поиск по термину «JBIG2» в «Гугле» даёт сотни тысяч упоминаний, по большей части в связи со спецификациями или девелоперскими аспектами, ибо конечного пользователя такие подробности не интересуют, да и не должны интересовать. При этом один из читателей Криселя уже сообщил о воспроизведении ошибки с подменой цифр на МФУ фирмы Brother (популярная в России марка). А кто проверит продукты Adobe, а нашей ABBYY (и там и там JBIG2 применяется)?
Если даже Xerox столь безответственна, что, зная о проблеме явно не первый год, лишь мельком помянула её в мануалах, но так и не потрудилась исправить, можно ли рассчитывать на понимание других производителей и разработчиков?
Семь ненужных и даже вредных функций Facebook, которых не должно существовать
Олег Нечай
Опубликовано 14 августа 2013
Сначала сеть Facebook служила просто для общения студентов; в ней присутствовали ваши одногруппники с фотографиями-аватарками и статусом их личных отношений. Потом появилась «Стена», потом — «Лента новостей», затем — «Места». Сейчас в Facebook так много функций и они появляются с такой стремительностью, что подавляющее большинство пользователей даже не подозревают о них. Между тем среди этих функций есть и абсолютно бесполезные, и даже вредные. Вот лишь семь из них.