bash.im ithappens.me zadolba.li
8693

SuperPuperAntiGame, или Гонка вооружений

В 1990 году поступил я в МВТУ им. Баумана и попутно устроился работать оператором в местный вычислительный центр под названием «Аквариум». Только-только появились первые персоналки, и к нам как раз завезли суперсовременные компьютеры IBM PC XT. Как водится, студенты сразу же вместо занятий стали на них играть.

Начальство поставило задачу игры запретить. Сначала пытались бороться словесно — не помогало. Тогда я решил бороться программно и взялся за изучение ассемблера. Через пару месяцев появился первый продукт под названием AntiGame. Программа резидентно висела в памяти, перехватывала запуск программ через функцию 4Bh 21 прерывания и имела базу сигнатур различных игр — просто читался кусок данных размером 32 байта из файла со смещением 1000h. Если запускаемая программа совпадала с одной из сигнатур, то считалась игрой. Запуск обрывался, в буфер клавиатуры посылалось echo y|del., проигрывалась веселая мелодия. Через месяц мелодию знали все.

Пару месяцев всё шло хорошо, база сигнатур пополнялась, студенты ходили злые и вынуждены были заниматься делом. Но тут группа студентов тоже села за ассемблер и через месяц хакнула мою программку. Хак быстро распространился среди посетителей «Аквариума», студенты снова стали довольные, играли повсеместно, а мелодии было не слышно. Отловив и изучив хак, я выяснил, что там тупо восстанавливался оригинальный вектор 21 прерывания, и моя программка обламывалась.

Покумекав, я взялся за клавиатуру. Спустя пару месяцев родился шедевр под названием SuperAntiGame. Это была шедевральная программа, написанная с использованием всех современных технологий, включая вирусные. Частично она даже использовала неизвестный тогда механизм «стелс», чем я до сих пор горжусь. Программа перехватывала 13 и 21 прерывания, причём не обычным способом, а путём внедрения в точки входа в области DOS, что делало бесполезным восстановление оригинальных векторов прерывания. В функциях поиска, открытия и записи файлов делалась проверка на имя файла antigame.exe и в случае совпадения возвращалась ошибка «File not found», так что ни один из «коммандеров» программу не видел. Также перехватывалось прерывание таймера 1Ch — на нём висела функция, постоянно проверяющая код в памяти. Если хотя бы один бит был изменён, то отключалась клавиатура, запускалась мелодия, флаг read only со всех файлов в текущем каталоге снимался, а в буфер клавиатуры отправлялось так любимое студентами echo y|del.. Помимо этого, там было ещё множество новаторских решений. Полный исходник занимал около 300 КБ текста, откомпилированный файл — 9 КБ.

Около года лучшие студенческие умы безуспешно бились за право играть в игрушки и пытались взломать мою программу. Почти год я ходил королём, пока в один прекрасный день не увидел нагло ухмыляющегося студента, демонстративно играющего в тетрис и смотрящего на меня с ехидцей. Моя программа была повержена.

Я, конечно, не питал иллюзий и знал, что рано или поздно это случится. К тому времени подходила к концу разработка бета-версии нового SuperPuperAntiGame, работающего в защищённом режиме только вышедшего тогда процессора 386SX, первые компьютеры с которым появились в нашем «Аквариуме».

Жаль, не удалось тогда довести задуманное до конца — увлёкся другим делом и AntiGame забросил. Но и сейчас, спустя два десятилетия, я вспоминаю эту гонку вооружений и думаю, какой же стимул для изучения программирования дала и сколько же талантливых программистов вырастила жажда игр.

8692

Ты не знаешь кунг-фу

Жена попросила научить её паять. Ну, от нечего делать дал ей старую материнку и техзадание: выпаять все конденсаторы.

— А что такое конденсаторы?
— Ну, это специальные штучки для накопления электрического заряда.
— А как они здесь накапливают заряд? — показывает жена на зелёную печатную плату материнки.
— Вот видишь зелёные полоски-дорожки? Знаешь, что это?
— Конечно! Это Матрица!

8691

Герой IT-джамшутинга

Взяли на работу нового администратора базы данных. Первым заданием ему было проверить списки логинов к базе и обновить имена-телефоны, которым эти логины принадлежат, — вдруг кто-то имя сменил или в другой офис переехал. Что может быть проще? Взял логин из базы, посмотрел на владельца, проверил по новой телефонной книге номер, позвонил, уточнил, записал изменения.

Наш герой IT-джамшутинга убил все логины из базы, а по корпоративной почте сделал рассылку: «В целях усиления контроля за безопасностью просьба всем сотрудникам, которым нужен доступ к базе данных, заново заполнить форму запроса логина». Геноциду подверглись не только личные логины простых сотрудников и автоматических систем, но и логины всей административной группы, включая самого героя.

Итог: полдня на отпаивание главного админа валидолом (она у нас уже в возрасте дама), изъятие орудий убийств у вторичных админов и один прячущийся в туалете выпусник престижного университета.

8690

С миру по нитке, с программера по байту

Получила как-то раз одна госконтора федерального подчинения крупный программный продукт. Написан он был под заказ столичными спецами, и заплачено им было весьма и весьма много. По факту оказалось, что программа сырая и много жрущая — потребляла ресурсы нескольких серверов, а чуть позже оказалось, что некоторые заявленные функции просто не работают, а некоторые хоть и работают, но очень криво. Разработчики выслушали все замечания и претензии и пообещали через год выпустить апдейт.

После того как региональные пользователи запросили совершенно новую функциональность в рамках того, что делала московская программа, было принято писать новую программу своими силами. За пару месяцев айтишники госконторы поговорили со всеми пользователями, на основе их рассказов спроектировали базу данных и выдвинули требования к будущей программе.

Начали писать. За полгода сделали. Кое-что работало кое-как, кое-что важное работало отлично, кое-что так и осталось в стадии идей и разработки. Но программу приняли в промышленную эксплуатацию, провели по всем документам и похвастались перед департаментом в Москве о том, что и в провинции сидят классные разработчики. Получили премии.

Прошло ещё полгода. Москвичи выпустили обещанный апдейт, который закрыл ряд багов и добавил функций, но так и не перекрыл очень специфические возможности местной программки. Радостный ведущий разработчик выпустил ещё пару обновлений и свалил в коммерческую фирму заниматься цисками.

Прошел ещё год. Московские разработчики выпустили ещё одно обновление и официально сказали: то направление развития функциональности, о котором им писали из провинции, некритично, и думать надо по-другому. Согласовали своё мнение в главном департаменте госконторы и получили ещё денег по госконтракту. В региональном филиале пользователи возмутились и заявили, что неправильно отказываться от хороших возможностей автоматизации, и вообще, москвичи неправы. Потом оформили все новые идеи в письмо о необходимости разработки и отправили начальству.

Начальство подумало, вспомнило о премиях за новые идеи, согласилось и приказало программу доработать. Вот только старая версия была на C# и MSSQL, а разработчик, которого наняли взамен старого, знал PHP и чуть-чуть SQL. Благо все идеи о доработке сводились к созданию пары запросов. Однако срок доработки по приказу был месячный, потому разработчик перекрестился и сделал новую программу на PHP. Да, она выводила только результаты этих двух запросов. Да, оформление было просто никакое, но программа работала — и работала очень быстро. А ещё она использовала старую базу и была веб-ориентированной. Потом разработчик предложил перевести всё на веб, потому что так модно, и через полгода ушёл работать в крупному региональную контору.

Когда вышло новое обновление большой программы и новые замечания по местной, на должности разработчика сидел вчерашний студент, который знал Firebird и Delphi, а ещё очень любил линукс и открытое ПО. Примерно тогда же выяснилось, что давно используемый MSSQL нелегальный, и денег на его легализацию не предвидится. Так как разом отказаться от старой базы было невозможно, то пришлось для начала писать скрипт, который копировал данные каждую ночь из старой базы в новую, и потихоньку переписывать функциональность двух старых программ в новую разработку. Естественно, прежде всего студент написал то, что требовало начальство, и в тестовую эксплуатацмю ушла третья программа, которая работала с одной задачей, но выполняла новые функции. Пользователям под роспись полетели новые инструкции о работе с программным продуктом, и на рабочем столе каждого из них появился очередной ярлычок.

Через полгода к разработкам подключились безопасники и потребовали внести множество изменений. Московский разработчик отказался от проекта, предоставив госконторе развивать его дальше своими силами, а студент уволился с тоски.

8689

Вы просто не умеете их готовить

Не везёт мне в последнее время общаться с разного рода сервисами поддержки. Прямо карма какая-то. Что ни куплю — бракованное, что ни закажу — не то, интернет висит, когда так нужен. В общем, набил уже руку в общении с подобными структурами. Но последний случай меня несколько огорошил.

Купил домой беспроводной маршрутизатор стремительно развивающейся компании. Но обнаружилась беда: в нужном мне режиме работы интерфейс не получает настройки по DHCP. C помощью саппортов провайдера и Гугла был выявлен небольшой, но критичный брак.

Сервисный центр долго пытался убедить меня в том, что я лопух, но последний довод выбил меня из колеи:

— Молодой человек, что вы мне тут рассказываете? У меня дома стоит такой же роутер, и я хочу вам сказать, работает он прекрасно!

Я боюсь нести устройство в центр, где такой довод считается основанием, чтобы отбросить проблему.

8688

Ответ мне запили!

7 марта 2012, 10:00

Написаное пером не вырубишь топором. Но вот написанное в интернете могут вырубить, причём под корень. В том числе и полезные сообщения, в которых оказывалась помощь пользователям с проблемой. А всё потому, что в других сообщениях высказывалось мнение об отношении компании к рядовым пользователям.

Это форум Microsoft TechNet. Зачем вы так, «мелкомягкие»?

8687

Вафля на колёсах

7 марта 2012, 10:00

Химфак государственного университета. Приключилась какая-то неведомая проверка на тему заполненности и использования лабораторий, и всех дипломников созвали на бурную ИБД с утра до вечера в лабораториях кафедры. Меня и ещё двух коллег по несчастью оторвали от выполнения (действительно!) работы в НИИ — все знают, чем обычно занимаются пятикурсники за полгода до защиты. Ну, думаю, ничего, заодно допереведу монографию. Какой в наше время главный инструмент переводчика? Правильно, онлайн-словари.

Итак, день Х. Прихожу в родной универ, встречаюсь с руководителем и отправляюсь в лабораторию в цокольном этаже. Как вы уже догадались, о прелестях мобильного интернета можно смело забыть как о страшном сне.

Итак, задача. Пароль от универского вайфая давно просрочен, соответствено, идея отметается сразу. В лаборатории имеется комп, и к нему даже подключён сетевой шнур. Но и тут облом: всё нужно настраивать, а параметров ни у кого нет. А надо тут и сейчас.

Чисто машинально рука тыкает в значок беспроводных соединений в трее. Видна небезопасная сеть с названием MegafonTrolleybus. Напрягаю память и вспоминаю, что в последнее время начали ставить точки доступа в электротранспорт. Вот она, польза от интернетизации рогатых, ведь прямо за ограждением универа их стоянка! Ноут к окну поближе, подключение…

Конечно, про комфортный перевод (да и любой сёрфинг в принципе) можно было забыть, но Башем и IT happens я себя на какое-то время обеспечил. А потом троллейбус, видимо, уехал. Жаль, что не успел историю эту отправить через точку доступа на колёсиках.

8686

Если в кране нет инета, злые империалисты где-то

7 марта 2012, 08:00

Звонит в ТП девушка:

— Заходите в личный кабинет…
— Ой, а вы знаете, у меня есть комната мужа, спальня, зал… А личного кабинета нет.

* * *

Звонит ребёнок:

— Скажите ваш адрес.
— Улица Космонавтов, третий подъезд от помойки.

* * *

— Смотрите самый верхний пункт, сетевой интерфейс для всех соединений.
— Галочка убрана.
— Угу, а сетевой интерфейс?
— Прямое соединение!
— А сетевой интерфейс какой?
— Я не знаю…

* * *

— Ой, знаете, я блондинка, давайте я дам трубку молодому человеку, он понимает.

Может, дитя гор в сетях и гуру, но по-русски — ни бельмеса.

* * *

— Техническая поддержка %ISP%, меня зовут %name%, здравствуйте.
— %ISP%?! Слушай сюда, %ISP%, я тут сижу в инете и тихо тебя ненавижу!

* * *

Оператор оставляет абоненту заявку на установку роутера:

— Да, роутер будет стоить N рублей. Необходимо положить их на ваш лицевой счёт, и ближайший по времени настройщик…

Другой оператор машет руками и показывает, что роутеров нет. Первый невозмутимо продолжает:

— …не сможет вам принести роутер, так как они закончились на складе.

* * *

— Здравствуйте, я зашла в состояние подключения по локальной сети, здесь смотрю количество принятых пакетов, и их мало.
— А интернет у вас при этом работает?
— Да, но раньше вы присылали мне больше пакетов.

* * *

— А как вы проверяете скорость?
— Ну, я встаю в пять утра — у меня тут дела есть, — сразу бегу к компьютеру. Смотрю в торренте — если скорости нет, то всё, %ISP% давят. Происки империалистов!

8685

Я не я, и прошивка не моя

7 марта 2012, 08:00

Достался мне в подарок роутер, который в девичестве отзывался на фамилию Trendnet, но после небольшого фейслифта начал думать о себе как о D-Link. К сожалению ни первое, ни второе меня категорически не устраивало, поскольку мне привычнее пользоваться прошивкой WRT.

После тщетных попыток скормить веб-интерфейсу файл прошивки у меня закрались смутные сомнения. Несколько раз скачал заново, проверил контрольную сумму, почитал форумы. А гермафродит как стоял на своём, так и не уступал.

На одном из форумов наткнулся на предложение обмануть железяку и зайти в recovery-режим. А так как дело было далеко за полночь и терять было особо нечего, решил попробовать. Режим восстановления категорично утверждал большими красными буквами, что сие есть дело рискованное, и вообще, шёл бы ты отсюда.

После десятка неудачных попыток закралась мысль: «Может, дело не в бобине?» Но усталый мозг всё же вяло протестовал: мол, Убунту — это хорошо, и, собственно, какая разница веб-интерфейсу от того, кто ему скормит прошивку? После того как были опробованы Firefox, Chromium и Opera, а маленькая стрелка на часах переползла за отметку 3, стало уже всё равно.

Терять было нечего, а желание побороть железку только возрастало. Вдруг пришла мысль, что на ноутбуке есть лицензионная винда, беззастенчиво проданная вместе с буком больше шести лет назад.

После загрузки в винду всё же захотелось понять, что именно не нравится китайскому гермафродиту. Первым в бой пошёл Хром, но гермафродит оказался сильнее. Дальше Огнелис, Опера…

Когда настало полное осознание иррациональности происходящего, девайс сдался IE6.