April 27th, 2015

moose, transparent

бонус программиста

Время от времени я замечаю, что в какой-нибудь обыденной ситуации мне помогает "бонус программиста" - знание того, как устроены компьютеры и программы. Причем я не имею в виду тут что-то конкретное и мне хорошо известное - типа я знаю, как устроена ADSL-связь и поэтому могу отладить проблемы с подключением и увидеть, где проблема. Нет, это как раз неинтересно. Интересна ситуация, когда я не разбираюсь в том, что происходит, но общие знания о компьютерах и программах все равно ведут меня к правильному ответу. Я заметил, что такое случается довольно часто, и в самых разных, нетипичных ситуациях. Вот два примера из недавнего опыта:

(на всякий случай отмечу: эти примеры не означают, что я супер-крутой или не-программисты несчастные лузеры. Если я и вижу в этом какую-то мораль, то это просто неуклонное превращение мира вокруг нас в компьютерный мир и возрастающая важность компьютерной грамотности. То, что супер-грамотность - т.е. знания программиста - дает иногда "бонус" в обыденной жизни, кажется мне скорее багом, чем фичером: свидетельствует о том, что интерфейсы протекают)

1. Машина - в смысле автомобиль - умеет играть музыку с флешки с MP3 на ней. Выбор между альбомами (директориями) осуществляется только по их номеру, названия директорий не пишет. Я записал 15 альбомов и слушал их. Потом в какой-то момент взял флешку из машины домой, добавил на нее еще 5 альбомов. На следующий день вернулся в машину, вставил, включил, а она не дает все равно мотать дальше 15-го альбома, после него опять 01. Выключил машину, включил (стандартный подход), не помогает. Что делать?

Бонус программиста: понятно, что машина кэширует информацию о флешке и хранит у себя в долгосрочной памяти какой-то. Когда я вытащил флешку и вставил обратно при выключенной машине, она этого не "почувствовала" и не видела необходимости обновить кэш; с ее точки зрения флешку не вынимали вообще. Нужно вытащить флэшку при включенной машине и вставить обратно, тогда она "почувствует" и сбросит кэш. Сработало. Это решение кажется анти-интуитивным - додумался бы до него продвинутый юзер, который не программирует?

2. Я уже много лет покупаю электронные книги в Амазоне на киндл. Обычно они приходят на ридер с защитой от копирования (DRM), но я немедленно снимаю с них DRM с помощью плагина для программы calibre, это очень просто (первая ссылка в гугле на поиск calibre drm removal, если кому надо). Любой продвинутый юзер может установить такой плагин и снимать DRM с купленных книг. Недавно мне попалась книга, которую можно было только арендовать на время - Амазон начал давать такую возможность на киндле год или два назад. Купить ее было нельзя. Будучи арендованной, она сидит на ридере в виде файла, как и обычные покупки. Я попробовал снять DRM с этого файла и получил ошибку от плагина: "Снятие DRM с арендованных книг не поддерживается".

Бонус программиста: поскольку я знаю, как устроен DRM, мне совершенно очевидно, что для арендованных книг он ломается так же легко, как для купленных. Более того, сразу очевидно, что плагин не то чтобы не может, он не хочет снять DRM с арендованной книги. В принципе могла бы быть ситуация, при которой Амазон придумал для книг в аренду совершенно другой новый формат с новым видом защиты и хакерам было бы лень или недосуг его ломать, но шансы 10:1 что это не так и что в плагине стоит тупая заглушка. Далее, я знаю, что плагины для calibre пишутся на Питоне, и я знаю этот язык. Через несколько минут я нахожу код заглушки в плагине ("если книга такого-то типа, выдай сообщение об ошибке и не пытайся даже ее читать"), и удаляю его, еще через минуту у меня готовая расшифрованная книга с снесенным DRMом.

Есть ли у вас интересные примеры "бонуса программиста"?