bash.im ithappens.me zadolba.li
8871

Кис-кис-стресс-тест

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

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

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

Через пару дней перезваниваю узнать, как продвигается ремонт, и давешний суровый дядя мне сообщает, что моего бедолагу умудрились передать в главный центр по гарантии! А как же механические повреждения? Дядя ответил: согласно спецификациям, моя модель должна выдерживать резкое закрывание крышки со скоростью прыгающей кошки, помноженной на её массу. А матрица отслоилась и треснула, потому что была плохо приклеена. Таким образом, я выявил заводской брак, что является гарантийным случаем.

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

8714

Дыхание Деда Мороза

Флешки. Сколько ни говори пользователям, сколько ни объясняй — всегда будут находиться умники, не желающие учиться на примерах и потому страдающие.

Бухгалтеры. Почти каста. Количество информации, обрабатываемой толковыми представителями, распирает их извилины, выталкивая оттуда всё «лишнее». Бухгалтеры + флешки = головная боль техсаппорта.

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

Флешка слегка погнута и не монтируется в принципе. Открыть корпус невозможно — это гарантированно равняется убийству чипа (что, скорее всего, и произошло). Объяснения принимаются, но… Друзья-админы, что вы чувствуете, когда на вас смотрят влажными глазами и верят, что вы — единственная надежда? Особенно когда осознаёшь, что если скажешь «нет», то хоть и не по твоей вине, но человек будет искать работу в другом городе.

Я человек мягкий и добрый, ну и сдаваться, не попробовав, не привык. Звоню в московское отделение поддержки этих флешек — в ответ решительно отвергают любую возможность восстановления. Хорошо, настаиваю на подключении к делу зарубежной поддержки; там подтверждают, что данные при физическом повреждении чипа снять невозможно. Сообщаю ответы шефу, и поскольку отступать уже некуда, применяю исключительно национальный способ: медленно и аккуратно на домашнем верстаке выпрямляю флешку, подключенную к компу.

Бац — есть контакт! Чудо монтирует UDF и отключается через десять секунд. Отключаю и переключаю — уже пять секунд. Отключаю, сижу и думаю. Подключаю — работает. Успеваю запустить анлокер и впечатать пассворд — файловая система монтируется, и эта дрянь отключается снова. Опять думаю, отвинчиваю верстак с флешкой и кладу эту абстрактную конструкцию в пакете в морозилку. Жене даю ЦУ пожарить извлечённый шмат мяса, а остатками накормить кота.

Вынимаю слегка подмороженный агрегат и аки гепард несусь к компу. Подключается. Пароль, маунт, директории, файлики, но ничего не копируется, всё гаснет. Отключаю, думаю, пью пиво, заедаю мясом и пишу скрипт с логином и ddrescue. Замораживаю/подключаю ×10. Подтаскиваю комп к холодильнику — дело идёт веселее. Ещё десять тысяч чайных ложек — и золотой ключик у нас в кармане.

Жена берёт кота и уходит в спальню. На -дцатом цикле сдыхаю, поскольку дело за полночь и двигаться лень. Задумчиво оглядываю квартиру в поисках сосуда Дьюара с азотом или хотя бы Деда Мороза. Глаза фокусируются на баллоне со сжатым воздухом. Закрываю конструкцию фартуком, переворачиваю банку, задуваю флешку, подключаю — копируется. Аккуратно продолжаю процесс задувки карточки — всё, инфа снята! Замораживаю флешку намертво и внаглую уже копирую файлы напрямую. Всё, ура! Вентилирую помещение и иду спать.

Благодарность должна быть безгранична.

8766

Мы с тобой одной системы счисления

Ехал я домой в поезде после очередной учебной недели. Нечем было себя занять, поэтому решил сделать очередную лабораторную работу по дисциплине «Организация функционирования ЭВМ» (старый добрый ассемблер). Напротив меня в купе сидела довольно симпатичная девчонка и с умным видом тыкала в клавиатуру ноутбука. Через некоторое время мы познакомились, разговорились.

— Сколько будет два в тридцать второй? — решил в шутку спросить я.

Не прошло и двух секунд.

— Четыре миллиарда двести девяносто четыре миллиона девятьсот шестьдесят семь тысяч двести девяносто шесть.

Немая сцена секунд десять. Она встаёт, подходит и глядит в монитор моего ноута:

— Е$@ть! Ассемблер!

Со своей любимой я счастлив уже около трёх лет. Ассемблер — всему голова.

8816

Без плюсов, один лишь «С»

Прочитал GoF, всего Фаулера, трёхтомник Кнута, пересобрал FreeBSD, создал с друзьями agile-группу разработки MMORPG, поездил по конференциям, пожал руку Торвальдсу лично. Пришёл устраиваться на работу.

— 1С знаете?
— …
— До свидания.

8703

sudo апорт!

Сегодня был в гостях у коллеги-сисадмина. Оказывается, у него живёт лабрадор по кличке Баш. Пёс умеет выполнять несколько стандартных команд, но только в том случае, если командовать «sudo %команда%». Иначе пёс рычит и скалится. Я аж прослезился.

8654

Пусть из сарая вырастет дворец

Все, наверное, читали знаменитое «Если бы программисты строили дома». Однако тут есть и другая сторона. Осталась за кадром привычка заказчиков менять ТЗ на ходу, а также взаимодействие с пользователями.

Заказ на строительство пятиэтажки. Стандартная пятиэтажка, ничего сложного. Спрашиваю, нужен ли лифт. Нет, говорят, не нужен. Отлично, мне же проще.

Через полгода дом построен. Приходит заказчик:

— А почему лифта нет?
— (Вашу мать!) Так сами же сказали, что не нужен!
— Ну да, сказали… Оказалось, нужен.

Куда я вам лифт пристрою? Ладно, присобачу шахты снаружи, прям рядом с подъездом. Вместо окон на лестничных площадках пробьём двери. Шахты уродуют внешний вид дома, а лифты останавливаются между этажами, зато относительно быстро и без кардинальных перестроек. Месяц отладки (то застрянет, то трос оборвётся, то напряжение в доме проседает — электросеть не рассчитана на такую нагрузку) — всё вроде заработало.

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

Хрен с вами — растягиваю под окнами сетки и подстилаю надувные матрасы. Жильцы всё равно набивают синяки и шишки, а иногда умудряются промахнуться мимо сетки и сломать ногу или шею, но жалоб становится меньше.

— Знаете, мы тут подумали: лифты — это всё прошлый век! Вот я был вчера в торговом центре, там вместо лестниц эскалаторы!

Кое-как объясняю, что эскалаторы не влезут ни по габаритам, ни по массе, стоить будут, как вся эта пятиэтажка, а энергии жрать, как целая улица. И вообще, ТЦ — это одно, а жилой дом — другое, и нефиг извратом заниматься. Вроде отстали.

— Жильцы жалуются, что в подъезде постоянно посторонние, а у многих квартиры часто грабят!

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

— Пять этажей — мало. Давайте ещё штук двадцать добавим!

Кое-какой запас, конечно, есть — не зря же я в своём строительном ПТУ учился. Этажей пять фундамент ещё выдержит, а на пределе прочности — и все десять, но от двадцати точно конструкция сложится, как карточный домик, клянусь своим мастерком.

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

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

— А вот я вчера видел рекламу президентского бункера. Сказали, он выдерживает прямое попадание мегатонной боеголовки. А наш дом выдержит?
— Нет, конечно.
— А почему? Надо, чтобы выдерживал!

Вот так и живём.

8761

Косынка по-домашнему

Удалил бухам все игры начисто. Захожу в кабинет. Сидит паренёк-бух и раскладывает «косынку» по удалёнке через TeamViewer с домашнего компа.

8815

Срамной Аллой

Год назад жил в общежитии блочного типа. Так уж сложилось, что я могу уснуть либо перед экраном, либо в объятьях жены. Жены в тот день не было дома — уехала к родителям. Поэтому вечером пришлось запустить в качестве колыбельной «Звёздные войны», да погромче.

05:00. Звонит будильник. Открываю глаза, смотрю на монитор. В окне проигрывателя — последний характерный кадр порнофильма. Куча мыслей в голове. Быстренько подползаю к буку, открываю список воспроизведения. Light Alloy после того, как закончились «Звёздные войны», автоматом подгрёб соседние файлы на флешке — три сорокаминутных порноролика.

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

05:05. Нервно курю.

05:15. Встречаю в общей умывальной комнате соседа по блоку.

— Олег, тебе сегодня ночью ничего спать не мешало?

Вместо ответа сосед характерными жестами показывает, что именно ему мешало спать. Из дальнейшего диалога узнаю, что в начале первого ночи возле моей комнаты дико ржали соседи как минимум из трёх комнат.

06:00. Беру в руки мобильный, чтобы позвонить жене и избежать доклада подруг по общаге о странных звуках из нашей комнаты.

— Дорогая, ты не поверишь, какая фигня приключилась со мной сегодня ночью…

В топку Light Alloy! Мужики, Media Player Classic — он такой… Такой классный!

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