Anatoly Vorobey (avva) wrote,
Anatoly Vorobey
avva

Categories:

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

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

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

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

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

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

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

Есть ли у вас интересные примеры "бонуса программиста"?
Tags: программирование
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 125 comments
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →
Previous
← Ctrl ← Alt
Next
Ctrl → Alt →