bash.im ithappens.me zadolba.li

Давным-давно

6032

Теплушка кластерного типа

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

Разгружались мы в холлах местных домов культур, ночевали там же, а утром широко распахивали двери для местных «аборигенов», у которых были столь же широко распахнуты глаза от новых и непонятных штучек, флешек и красивых мышек.

В холлах бывало холодно. Спишь так вот на коробках от CRT-мониторов, шубой укрылся, зубы стучат… Как бы сделать самодельный обогреватель? Компьютеры же есть! Собираем стеллаж из самых навороченных компов, три ряда по десять машин, запускаем на всех 3DMark и ложимся за задними стенками. Через 20–30 минут компы нагреваются, воздухом дуют тёплым, и уже намного комфортнее, да и под ровный шум кулеров засыпаешь практически сразу. Эх, было время!

5949

Не импами едиными

13 апреля 2011, 10:00

Некогда мой знакомый разжился новенькой игрушкой. Судя по его рассказам, игра была в сто миллионов раз круче любимого мною Wolfenstein 3D. Собрав со всех родичей дискеты, я пошёл в гости. Игра была большая, времени на демонстрацию у знакомого не было. Разбив архивы на тома по 1,4 МБ, я записал игрушку на толстую пачку дискет и отправился домой.

Процес распаковки-установки занял всего два часа. По завершении мытарств я наконец запустил вожделенное чудо игропрома. Менюшки выглядели потрясающе — отправляемся в бой!

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

Оказавшись у знакомого снова, я застал его за игрой. Его версия в корне отличалась от моей: никаких полосатых стен, никаких невидимых врагов, всё красиво и опрятно. Как вы догадались, при копировании у меня побились файлы с графическими ресурсами. Тяжело было запоминать на каждом уровне местоположение всех врагов, кроме импов, но молодой ум справлялся с этим без проблем, и я играл и играл. Doom 2 был хорош даже в таком виде.

5875

Мечта идиота

4 апреля 2011, 15:45

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

Негласное соревнование в наборе очков среди сотрудников уже давно процветало — актуальная таблица рекордов лежала в сети, и каждый игрок копировал её в свой локальный Тетрис. Свободное время заполнял тупой азарт; вскоре таблица была полностью занята моими достижениями. Моей таблицей вскоре перестали пользоваться — никто не мог добраться даже до последней строчки; я же продолжал упорно карабкаться вверх. С каждым днём планка поднималась выше и выше. Насколько я помню, разрядность позволяла набрать 99999 очков. Было страшно интересно, что же будет при результате 100000 и более? Это уже превратилось в некую мечту идиота.

В один прекрасный день я всё же преодолел планку и ожидал фанфары и рукоплескания от разработчика игры. Вместо этого таблица рекордов была полностью очищена. Я опешил и решил: что-то, наверное, сбойнуло. Достал бэкап таблицы — и снова закружились и западали фигуры… Ещё одно взятие планки — и таблица снова обнулилась. «Это не баг», — решил я и забросил Тетрис, но Пажитнову глубоко благодарен и игру его храню как реликвию. Молодой программер в короткий срок научился вслепую работать на клаве, осознанно и своевременно делать бэкапы, получил упорство в тестировании программ, заслужил неформальное уважение коллег, а главное — потерял азарт к компьютерным играм и приобрёл профессиональный интерес.

5797

Потом уволил одного, и стало их FF

В конце восьмидесятых у нас в школе появились компьютеры — клоны «Синклера». В системе были предустановленные игры и поддержка Бейсика, разумеется. Наглядевшись на всё это, мой друг решил написать собственную игру — лучше тех, что были в комплекте. И написал. Это была простенькая двумерная космическая стрелялка — для тех времён очень даже ничего. Я был назначен первым тестером.

Исхитрившись остаться после уроков в классе, я стал увлечённо играть. За сбивание звездолёта с первого выстрела игроку добавлялась в запас одна жизнь. Я набрал пятнадцать жизней и, пальнув по очередному звездолёту, ожидал прибавления шестнадцатой — но жизней стало ноль, и я умер.

Прошло уже больше двадцати лет, а я так и не полюбил компьютерные игры.

5783

Игра в свои ворота

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

Будучи обычным студентом обычного вуза, мой брат Саша помимо обычных студенческих увлечений уважал две вещи: программирование и хоккей. Именно поэтому в качестве обязательной для любого студента халтуры была выбрана полставочная должность инженера-системотехника в местном ледовом дворце. Да, в нашем уездном городке была своя хоккейная команда (назовём её «ГазМяс»), которая играла хоть и не на высшем уровне, но с довольно стабильной периодичностью занимала призовые места в своём дивизионе. Тренер «ГазМяса», дядя Вася, пользовался огромным уважением в кругах болельщиков.

Сашкина работа была довольно творческой и в основном заключалась в лечении внезапно глюкнувшего электронного оборудования. Особенно любимым занятием на рабочем месте была пляска с бубном вокруг электронного табло. Монохромная светодиодная панель через пень-колоду была подключена к гордости завхоза ледового дворца, старенькому 286-му с 640 килобайтами памяти и 30-мегабайтным винчестером. Работой табло управляла писанная на Сях программка, сопровождение которой передавалось по наследству от одного инженера-системотехника к другому. Жил мой брат да не тужил, но в один прекрасный день пришёл домой сильно пьяным, а наутро подал заявление об уходе. О причинах такого поступка он рассказал мне только через десять с лишним лет, и то после очень хорошего количества совместно принятого на грудь алкоголя.

Шёл февраль, хоккейный сезон подходил к своей кульминации, и мой брателло начал было грустить по поводу будущего вынужденного отпуска, как вдруг в один прекрасный день к нему в каморку зашёл профсоюзный деятель с предложением скинуться на подарок к дню рождения дяди Васи. И тут Сашка зажёгся Идеей! Лучший подарок для тренера что? Разумеется, победа любимой команды!

Идея была простой и гениальной. Большинство очков «ГазМяс» терял, лидируя в конце матча с разницей в одну шайбу и пропуская гол за несколько секунд до конца встречи. Соответственно, если как-нибудь уменьшить время игры, то и вероятность неблагоприятного исхода была бы меньше. Помимо судьи-хронометриста, контрольный секундомер которого благополучно пылился в ящике стола, единственным источником точного времени было пресловутое табло. Идея Саши заключалась в следующем: модифицировать табло так, что если «ГазМяс» ведёт, то смена секунд происходила бы не через одну секунду реального времени, а приблизительно через 0,9 секунды. Разница для человеческого глаза во время игры практически незаметная, но для игры — довольно критическая.

В программу было внесено следующее условие:

for (i=0; i<2; i++) { // Мы не знаем, в каком порядке команды будут на табло
if (startswith(lower(team[i]), "газмяс") { // Пусть мелочь из «ГазМяса-2» тоже порадуется
teamindex = i;
}
}

if (score[teamindex] > score[1 - teamindex]) {
quantifier = 0.9;
} else {
quantifier = 1;
}

Изменения были успешно протестированы на второй команде. Наступил день рождения уважаемого тренера, по совпадению ставший и днём очередного матча «ГазМяса». Саша, предвкушая радость дяди Васи вечером, отправился сдавать последний экзамен сессии. Только вот препод попался на редкость въедливый, и освободиться брату удалось только часов в восемь, аккурат к окончанию третьего периода. В нетерпении он зашёл на трибуну и обомлел. «ГазМяс» проигрывал одну шайбу, до конца игры оставалось десять секунд. Вбрасывание, пас назад, к левому борту, в центр, бросок… Шайба вошла в ворота соперника «ГазМяса» на мгновение позже сирены. Судья покачал головой и развёл руки в стороны, показывая, что взятие ворот засчитано не будет. Сашка посмотрел на табло. Местный «ГазМяс» встречался с «ГазМясом» из другого города. Украденной десятой доли секунды не хватило до ничьей.

К счастью, о произошедшем никто не узнал, а на турнирном положении «ГазМяса» потеря двух очков так в итоге и не отразилась. Мой брат живёт и работает сейчас в Штатах, пишет программы для микроконтроллеров, которые использует NASA в своих спутниках.

5775

Как неудачно сложилось

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

Внезапно привезли партию ультрасовременных по тем временам машин. Возникла потребность игрушки со старого компа скопировать на новый учительский. Но на старой машине только пятидюймовый привод, а на новых — только 3,5".

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

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

5773

Раз-два-три — тринадцатый, гори!

На первом курсе дисциплину «Вычислительные системы, сети и телекоммуникации» у нас вёл преподаватель, занимавшийся IT ещё во время зарождения этого понятия. Старенький уже был дедушка, лет за семьдесят, много глупого по предмету говорил, зато демонстрировал килограммовую ячейку памяти на 64 байта (если мне память не изменяет) и рассказывал случаи из своей практики.

Они с товарищем, в то время ещё младшие научные сотрудники, делали какую-то ЭВМ для военных, занимавшую по тем временам целое помещение. День до демонстрации проекта заказчикам; в поте лица паяются схемы — всё руками, да. Запарывается схема, отвечавшая за то, чтобы в нужный момент на пульте загорались нужные лампочки, то есть за UI. Схему надо делать заново, а займёт это неделю. Что делать?

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

5755

Лопата — перфоратор солдата

Протягивали мы оптоволокно через подвал одного здания — очень корявого, надо сказать. Ни тебе технологических отверстий для кабелей, ни электрической проводки — пришлось самим тянуть переноску аж за 300 метров. Темень, сырость и бетонные стены по полметра толщиной в самом узком месте. После пяти часов с перфоратором мы с напарником чувствовали себя шахтёрами-забойщиками. Рождались мысли о том, как хорошо бы из пушки стену эту прошибить или направленным взрывом. Во время нечастых перекуров на поверхности мы делились всё новыми идеями. С нами курил мужичок лет за пятьдесят. Оказался мастер, своего рода коллега. Услышав наши домыслы «хорошо бы из гаубицы», он рассказал поучительную историю.

В начале 80-х в одной несекретной военной части потребовалось прокинуть электричество туда, где его не было, оттуда, где оно было. Кратчайший путь — самый верный: тянуть было решено частично по старому бункеру, частично по небольшой траншее. Рассказчику «посчастливилось» оказаться в группе, которая должна была проделывать технологическое отверстие в стене бункера. Каких-то два метра железобетона. Перфораторов в то время не было, но были ломы и такая-то мать. Проделать ломом дырку глубже его длины не получилось. Особым распоряжением командира части были выданы два взвода в помощь, но человеко-часы решали не всё. Дырка была уже большая, но короткая; с другой стороны вырыли уже целый котлован, оголив изрядную часть стены несчастного бункера, и шли навстречу, но, видимо, мимо.

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

К счастью, никого не убило и не покалечило во время дыркопроделывательной операции. К этому же счастью появился генерал с негласной проверкой — слухи о разрушении бункера дошли до командования. Генерал выяснил обстоятельства, тяжело вздохнул, взял командира части и приказал принести лопаты в количестве двух штук. Одну взял сам, другу вручил командиру и начал рыть канаву вокруг бункера, попутно читая лекцию на тему «Умный в гору не пойдёт». Где-то полчаса они вдвоём трудились, потом генералу это дело наскучило, и он отбыл восвояси, приказав через неделю проложить свет и привести бункер в исходное состояние.

5753

Проходите, нечего здесь смотреть

Лет десять назад в нашем городе единственным приемлемым вариантом доступа в сеть был один из дайлап-провайдеров. Тарификация была поминутной — выходило более доллара в час, совершенно неподъёмная сумма. Провайдер предоставлял и бесплатный тестовый доступ. Зайдя под логином «guest» и паролем «sci», пользователь мог подключиться, поглядеть на сайт провайдера и зайти в личный кабинет для пополнения счёта.

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

Остальное было делом техники. HTTP-прокси принимал запрос от локального браузера на открытие страницы и, заворачивая его в POST-метод, передавал PHP-скрипту на рабочем сайте. Cкрипт разворачивал запрос, выполнял его, скачивая запрошенный документ, и возвращал ответ прокси. Мелкие завитушки вроде аутентификации пользователей — и в интернете стало можно сидеть бесплатно. Идиллия омрачалась только тем, что гостевой доступ разрывался каждые десять минут, но это мелкое неудобство никак не мешало наслаждаться халявой.