8698

Бэкап Факапович Бэкапов

Помните законы Мёрфи? Мужик реально понимал жизнь.

Конец августа. Четверг. Интуиция шепчет: «А сделай-ка снэпшот виртуалок, давненько не делал ведь». Интуиция — штука полезная. Дела.

Пятница. Сбой харда на хост-системе. Три часа контора стоит, пока e2fsck сканит терабайтный хард — ну не дают денег на зеркало, что делать? Находится сколько-то битых секторов. Которые мистическим образом принадлежат тому самому свежему бэкапу-снэпшоту (привет Мёрфи). Который удаляется. А предыдущий — за январь.

Стук падающих кирпичей.

Система, конечно, восстановлена. Свежие бэкапы данных (они дублируются трижды) развёрнуты. А вот последствия старой системы понемногу всплывали два дня. Оказывается, много чего поменялось за это время.

8697

И пусть зажгутся электроны

Работаю продавцом-консультантом в крупной сети магазинов электроники. В последнее время люди постоянно спрашивают специфические переходники — например, HDMI — RCA, HDMI — USB и т. п.

Больше всего порадовала девушка, которая очень хотела заиметь переходник с двух «тюльпанов» (RCA) на оптический Toslink. Искренне удивлялась, что в оптическом кабеле сигнал передаётся в виде света.

8696

Компоголизм

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

И надо же было такому случиться, что с разницей буквально в два дня я осталась вообще без ПК: сначала сгорел настольник, а потом пришлось отвезти ноут в сервис. Неожиданно появилась куча свободного времени. Убралась в квартире (ух ты, сколько места появилось!), порадовала домашних пирожками (оказывается, я неплохо готовлю), купила абонемент в фитнес в надежде улучшить фигуру к лету, дочитала начатую ещё зимой книжку, вернулась к давно заброшенной вышивке…

Пришлось признать, что всё-таки были правы: комп действительно занимал слишком много времени. А чтоб понять это, достаточно было отказаться от него всего на несколько дней.

8695

Хорошая система лежать не будет

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

Т-ты ч-что куп-пил? Он-н ж-же г-горизонт-тальный!

Я не сразу понял, чего именно испугался однокурсник. В разговоре выяснилось, что когда-то он собрал себе компьютер в похожем горизонтальном корпусе и забыл закрепить дисковод. При попытке вставить дискету привод упал на мать и сжёг её. С тех пор однокурсник десктопы покупать зарёкся.

8694

Окна закрывай, баю-бай

Я своему ребёнку сказал, что разрешу пользоваться компьютером, только если он его сам соберёт. Думал, сразу охладеет к этой идее, а он у друзей настрелял старых комплектующих, даже монитор выпросил — и с горем пополам собрал. Школу недавно перевели на линукс, и на самодельный комп сын поставил его же.

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

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 помощью саппортов провайдера и Гугла был выявлен небольшой, но критичный брак.

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

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

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