— Так у вас страниц в документе всего три.
— А! Как так? Точно! Извините, пожалуйста!
#10801: Обои плывут безо всяких веществ
12:45 05.04.2013, IT happens
Делаем новый проект. На сайте предусмотрен достаточно простой и строгий фон: мелкие диагональные серые полоски на светло-сером. Верстальщик всё сделал, я эту вёрстку натягиваю на движок. Постепенно всё прописываю, проверяю. И тут замечаю, что фон на сайте плывёт. Понимая, что просто не выспался, заработался, забиваю на это дело. На следующий день повторяется то же самое.
В общем, через неделю выяснилось, что верстальщик инициативно сделал фон анимированной гифкой с большой задержкой. За эту неделю в компании полсотни человек думали, что их глючит. Решили оставить это пасхальное яйцо.
#10802: Вона как оно бывает
13:15 05.04.2013, IT happens
В 2011 году строили раритетную TDM-сеть с коммутацией потоков от 9600 бит/с до 64 кбит/с внутри потока Е1 на 2 мбит/с. Сеть энергетиков, у них именно такие для технологии и диспетчерской связи используются традиционно. Для молодых инженеров TDM — это говно мамонта, а кто застал, знают, что основа TDM — синхронизация.
Через наше оборудование должны АТС стыковаться, их другая фирма поставляет-настраивает. Не работает телефония вдребезги. Начинаем разбираться с инженером-телефонистом. Человек настроил сеть из полусотни АТС. Это не первая его сеть. Но в процессе общения я понимаю, что человек о синхронизации не знает ничего. Вообще о её существовании. Сначала не могу в это поверить, но затем начинаем с коллегой на пальцах объяснять, что это такое и как устроено. И очень примечательное лицо стало у собеседника. Человек никак не мог определиться: то ли его жёстко разводят, чтобы спихнуть на него свою проблему, то ли вся его картина мира должна рухнуть. Так он до конца нам и не поверил. Может, и к лучшему — слишком сильное потрясение бесследно не проходит.
#10803: Внортонепоэфтрисампосмотри
20:45 05.04.2013, IT happens
В хорошем, крепком банке с конца восьмидесятых активно использовались несколько барабанных АЦПУ с интерфейсом ИРПР. А надо знать, что ИРПР — это штука хитрая и с привычным Centronix не особо совместимая. Поэтому к этому делу прилагался драйвер.
Изначально всё это было заточено под XT. К 93-му году экстишки себя совсем изжили и были переданы в филиалы райцентров, где после Robotron-1715, а кое-где и печатающих калькуляторов Elka-55 им сильно обрадовались. На смену заслуженным экстишкам пришли 286-е машины. Тут-то принтера и отвалились. Кооператив, который делал сопряжение интерфейсов, уже давно пукнул и испарился — разумеется, вместе с исходниками. Печатать сальдовки по сто метров надо. Оставшиеся экстишки отбирают в приказном порядке.
Давай разбираться, что не так. Тык-мык-тык-мык. Что первое в глаза бросается? Экстишка — 4,77 МГц, 286-ая — 12, а в турборежиме — 16. Перепаиваем кварц на экстишечный. Работает принтер. Значит, завязан на тактовую частоту и квитирование делает в зависимости от неё. Но кто ж позволит из работающей экстишки кварц попятить?
«Пишем драйвер», — говорит шеф. Пишем, чё! «За сутки управимся», — отвечаю я.
И тут выясняется, что спеков на ИРПР хоть чем жуй. А вот на ИРПР-М, он же Centronix, чё-то не видно нигде. Ну, пока всякие НИИ работали, можно было в их научных библиотеках покопаться. Или в какой ВЦ по старой дружбе заглянуть — спеки-то не секретные. Но на улице был 93 год, и почти всё уже загнулось и позакрывалось.
Хорошо, что драйвер был пару килобайт. Плохо, что в виде TSR-программки. Если что, Hiew и IDA появились заметно позже, а досовский debug дебагать TSR не очень умел. Даже хекс-режим «внортонепоэфтрисампосмотри», по-моему, ещё не появился. Поэтому сначала мы получили старую добрую распечатку хекс-дампа драйвера. Потом «дизассемблировали» карандашиком на бумажке. Нашли цикл задержки, который крутился в цикле управления квитированием, после чего рассчитали нужные значения для 12 МГц и попатчили драйвер. Найти под утро компилятор ассемблера тоже оказалось непростой задачей. Да и драйвер изначально не на ассемблере был писан. И мусорного кода было предостаточно.
Самое главное, что в цикле гонялось транспонирование каких-то мусорных матриц. Увеличение размеров матрицы и их количества позволило аналогично попатчить драйвер под 25, 33, 40 мегагерц. А вот, не приведи господи, считался бы там какой-нибудь факториал…
Потом появились 486 с кэшем, и всё накрылось тазом. Но к тому времени под рукой уже были и дебаггеры, и IDA, и компиляторы. И году в 96-м драйвер был-таки переписан.
#10804: Угроза грозы
12:15 06.04.2013, IT happens