Кто из вас помнит свои первые эксперименты с компьютерами, которые оканчивались тем, что родителям приходилось вызывать специалиста, чтобы всё починить?
Тогда мне было лет шесть-семь. Дома у нас проживало величайшее на тот момент достижение компьютерных технологий под названием «Нейрон» — тот самый, у которого винт был отдельной большой гудящей коробкой. Стоял на нём MS-DOS четвёртой, кажется, версии.
Как-то чёрт меня дёрнул поизучать файлики в корневом каталоге диска C. Нашел я файл autoexec.bat, в котором последней строкой было прописано c:\vc\vc. Функцию этого файла я понял сразу и решил проверить догадку, приписав в конце путь к «экзешнику» одной игрушки-стрелялки (кажется, она называлась Ranger). Ура, работает! Одно «но» — из игрушки не было выхода. Меню у неё не было, стандартные хоткеи не действовали — раньше я просто выключал компьютер, но теперь-то он каждый раз вновь запускал игру.
Пришлось вызывать папиного знакомого. Это стало моим первым компьютерным откровением: оказывается, можно пропускать выполнение файла autoexec.bat.
Звонит обеспокоенный приятель: компьютер, приобретенный с моей помощью два года назад, начал подозрительно гудеть при включении. Мол, погудит немного и перестаёт. Ну, думаю, дело ясное — один из вентиляторов загибается, у самого сколько раз такое было.
Прихожу, он включает машину. Тишина. Опять эффект присутствия сработал? И тут начинается гудение. Я на измене — на кулер не похоже, да и вибрация дикая. Прислушиваюсь. От DVD-привода звук идёт! Извлекаю диск — тишина.
Приятель, зяадлый игроман, с момента установки до завершения прохождения игры диск с ней не вынимал из привода. До сих пор проблем не возникало, но тут болванка попалась бракованная.
В далеком 2001-м отец купил нам с братом первый комп с условием, что мы будем изучать Тёмную Сторону Силы (С++). Естественно, об этом не могло быть и речи — игры и только игры.
В какой-то момент я подсел на «Казаков» — сутками играл. Прихожу однажды домой, пускаю игру. Через несколько минут она вылетает, и появляется окошко с примерным содержанием:
Сын, хорош играть в казаков!
Я в шоке! Пробую ещё — то же самое. Выяснилось, что отец от нечего делать сваял программу, которая искала в памяти «казачий» процесс и благополучно его грохала, дабы сынуля не убивал столько времени на бесполезные занятия. В итоге мы с братом начали-таки изучать программирование и стали не такими уж плохими специалистами — спасибо отцу.
Разбирал старый книжный шкаф и нашел руководство пользователя Windows 3.1. Как было хорошо в прошлом: к ОС прилагалась подробная печатная инструкция.
«Если вы новичок в системе Windows или хотите поупражняться в её новых возможностях, то для закрепления основных навыков вы можете поиграть в игры „Пасьянс“ и „Сапёр“. Обе игры имеют богатую графику и раскрывают большинство сильных сторон системы Windows».
Прошло семнадцать лет, а почти ничего не изменилось. Наконец-то я узнал, зачем нужны игры в Windows! Теперь, если шеф меня застанет за процессом, я с чистой совестью смогу сказать, что закрепляю основные навыки.
Работаю в техподдержке платежной системы. Звонит клиент, по голосу явно ребёнок, и начинает узнавать, почему не прошёл платеж за онлайн-игру. Прошу нужные данные: дату, время, сумму и логин.
Удалось не рассмеяться: логин назывался «ппцвам15». Разработчик игры подтвердил, что такой логин существует, но платёжка его не пропускала: «Логин не принадлежит оператору/провайдеру». Пока юзверёк не поменял логин на другой, система так и не провела платёж.
С окончанием универа перешёл я из категории «студент» в категорию «безработный». Запостил резюме, устроил дома подобие колл-центра — ищу работу, в общем. Но время-то свободное есть. Не нужны никому особо экономисты-менеджеры с корочкой переподготовки на бухгалтера... И делать нечего.
В один из таких дней поиска блуждающий взгляд упал на стоящую передо мной Playstation 3. Она у меня, надо сказать, из первых партий, с поддержкой всех изначально задуманных плюшек: и кард-ридер, и поддержка PS2-игр, и, конечно же, возможность установки линукса. В голове созрел план увеселения.
Скачиваю Xubuntu 9.10 для PS3, ставлю — установка проходит успешно, но загрузчик ругается, что не находит файловую систему. Переустанавливаю, разбивая винт вручную — тот же результат. Вспоминаю, что раньше ставил 9.04. Качаю Xubuntu 9.04, ставлю её. Оказалось, что по умолчанию винт в 9.10 форматируется в ext4, а в 9.04 — в ext3. Отлично, учтём на будущее. Обновляюсь до 9.10, качаю патчи — система настроена. Подключаю дополнительные репозитории, устанавливаю дополнительный софт, с помощью которого заставляю Xubuntu работать через Bluetooth с Sixaxis, родными джойстиками PS3. Ставлю из репозиториев ещё пару программ, из инета сливаю пару файликов и...
...и запускаю на современной консоли последнего поколения старый добрый NES'овский Super Mario Brothers.
Школа-интернат. Все давно играют в World of Warcraft. Сервер московский, так что играют чаще ночью. В общаге имеется воспитатель, который патрулирует комнаты и коридоры, и за игру в три ночи наказывает нещадно. Играют все лёжа на кроватях — так видно меньше. Однако это не летний лагерь, а всё-таки школа, и выполнение домашней работы по программингу происходит в той же обстановке, на кровати с чашкой кофе/банкой энергетика/бутылкой воды.
Итак, на часах 3:30. В комнате двое играют и один пишет код к завтрашнему уроку.
— Колян, ты где там бродишь? Танковать я, что ли, должен? — Да не парься ты, тут я, щас запинаем как ребёнка. — Серый, напомни, у нас в шестом номере через какую конструкцию процедуру делать? — Через while... Не, ну ты посмотри, срывается, козёл! Саня, тебе долго ещё проги набивать? Нам твой хант позарез нужен. — (под нос) Факинг Паскаль... Где я запятую пропустил? (шёпотом) Да щас зайду, убьём мы эту элитку и орду распинаем. Я вон вижу, у вас там пара орков бегает. — Ладно, ждём тебя.
Звонит телефон: — Элвис, не тупи, заходи в онлайн. Мы в ауте... Да-да, сделал я лит-ру, завтра спишешь. Заходи резче... Что?.. Какое ОБЖ? Какой конспект?.. Да сделаем, щас, добьём гада одного.
— Всё, добил прогу. Как часы работает! Я захожу. Ждите... — А нам не только ОБЖ задавали...
Патруль не дремлет. Мастер-класс от общаги: закрыть ноут и притвориться спящим за полсекунды, пока открывается дверь комнаты. Школа, а за выполнение домашней наказывают — жестокие нравы!
Пишем стрелялку. Естественно, в игровом мире куча всего стреляющего, взрывающегося, просто летающего и, самое главное, сталкивающегося.
При каждом столкновении должна вызываться функция под названием hit_happened(). Получилось так, что именно с этим у нас было связано огромное количество мелких глюков: вызывалась эта функция не с теми параметрами или через два раза на третий. Мы её чинили, потом она снова начинала глючить.
После очередной итерации мой начальник задумчиво сказал, что надо было с самого начала назвать её shit_happened().
Мои «продвинутые» родители тоже ставили мне пароль на BIOS, чтобы я в Quake II поменьше играл. Удаление пароля путём извлечения батарейки ни к чему хорошему не привело: пароль, естественно, появился вновь.
Перебирая в голове детективно-шпионские методы, я решил узнать для начала, какие символы используются. Сначала была идея положить внутрь клавиатуры под кнопки лист бумаги и лист копирки. После того, как клавиатура была разобрана, копирка не понадобилась — я придумал идеальный способ.
Клавиши фиксировались от выпадения защёлками. Особенность была в том, что они имели промежуточное состояние, в котором клавиша ещё не изъята из клавиатуры, но уже зафиксирована. Такая клавиша немного выступала над остальным и нажималась с характерным щелчком.
Таким образом были «подняты» все буквенно-цифровые клавиши. После того, как пароль был набран, нажатые клавиши стали ниже остальных и были переписаны на бумажку. Аналогичным способом, с той лишь разницей, что фиксировалась лишь одна кнопка, определялся порядок следования букв — по звуку щелчка было нетрудно выяснить, какой по счёту была набрана конкретная буква. Слово удалось подобрать за пару дней.
8 марта 2010
В этот совершенно не-айтишный праздник мы ни в коем случае не можем забыть о вас, любимые наши женщины! Счастья вам и бесперебойной работы вашим компьютерам!