#8347: Ракомстоятель I категории
15:00 25.01.2012, IT happens
Разбираю архивы своих исходников с 87 года. С каждым связаны какие-то воспоминания.
Вот 89 год. Волшебный язык CLIST. Фреймворк ISPF/PDF + CLIST + немножко PL/I = рабочее место бухгалтера по учёту машинного времени на ЕС-1066. Банальщина. Но с приколом. CLIST — язык без типов с целочисленной математикой. Если a = 2 и b = 2, то a + b = 4, а вот a and b = 22. Точность была нужна до второго знака.
Где наша не пропадала? И вот вам имитация деления столбиком путём добавления нулей к строке и последующим делением полученного числа. Это уже потом выборки из логов я переписал на PL/I — там было округление. Зато первоначальное ТЗ было закрыто за три недели. Конкурент за это время написал на ASM/360 модуль выборок и только-только дошёл до стадии отладки — даже не до deep alpha.
* * *
Вот 91-й. Рабочее место заместителя директора НИИ по науке. Интерфейс к базе научных работ. База лежит в СУБД ADABAS. Обработчик на PL/I. Интерфейс — всё тот же ISPF/PDF. Ну, и CLIST — как же без него? Обработчик ошибок диагностировал две ситуации. Ничего не нашли — «Х%ЙНАНЫ». Потеряли связь с базой — «П#$ДЕЦ». Каждая буква набиралась из звёздочек матрицей 10?16 и выдавалась на экран терминала 7927 со всеми доступными атрибутами: инверсно, с миганием и писком.
Сел замдиректора, д. т. н., профессор и вообще хороший человек за терминал, набрал данные для выборки, а ему — опа! Замдиректора в шоке. Техническим нутром он догадывается, что, возможно, облажался во входных данных, и набирает какую-то полную галиматью. Раза с десятого он получает и второе сообщение.
Я сижу у себя. Предвкушаю премию. Тут до меня доходит, что премии может и не быть, ибо внедрение произошло вместе с моим обработчиком — точнее, с его сообщениями. Ну, ничего, ща поправим — авось замдиректора ещё не успел попробовать. Правлю на что-то приличное. И аккурат в момент, когда я сохраняю модуль, раздаётся звонок от директора НИИ с указанием явиться с вазелином на ковёр и дать объяснения.
Отвертелся. Спасло то, что между звонком и явкой прошло время, явно недостаточное для правки программы. Даже вазелин не понадобился. Но премию дали в половинном размере — на всякий случай.
* * *
Вот 94-й. Крошечная базейка по учёту кадров и распределению отпусков. Даже тестовая база сохранилась: ФИО, должность, примечание. Примерно такая:
Иванов Иван Иванович — Директор — Получает мильён
Петров Пётр Петрович — Замдиректора — Главсамец
Васильев Дядя Вася — Дворник — Метёт себе и метёт
Сидоров Сидор Сидорович — Ракомстоятель I категории — Стоит себе и стоит
Базу эту я забыл занулить. Функции полного просмотра ТЗ не предусматривалось, только выборки. А где-то через месяц на работу приняли Сидорова С. С. — в общем, полного тёзку. Вбивает кадровица нового сотрудника, собирается нажать кнопку «Добавить» — а ему рубрикатор сразу должность подставляет и комментарий…
За замдиректора по АХО надолго закрепилось прозвище из базы.
#8348: Реестр: глубокое проникновение
16:45 25.01.2012, IT happens
Сидим в техподдержке. Приходит посетитель — солидный, лет под 50. Приносит винчестер, умоляет посмотреть. Говорит, работы на пять минут. Спрашиваем, в чём дело. Отвечает:
— У меня в папке system32 где-то была папочка с фильмами. Ну, вы понимаете, жена, дети… А я найти не могу. И ведь целых 25 гигов, а всё равно потерялись!
#8349: Индус — не национальность, а диагноз
16:45 25.01.2012, IT happens
Пишу страницу для сайта. Ничего особенного: внесение данных, впоследствии — минимальная их правка, а в основном просмотр. Единственное ограничение: одно поле должно быть уникальным, не повторяться в пределах таблицы. Поле текстовое, так что надо проверять и при повторе выдавать предупреждение. Ничего сложного, в движке есть готовая функция для такой проверки — выдаёт количество записей, соответствующих определённому условию.
Написал. Вношу тестовые данные, заведомо неправильные, чтобы посмотреть предупреждение. Позволяет вносить. Проверяю свой код. Всё верно. Немного меняю условие. Всё равно повторы вносятся. Проверяю ещё раз. Пауза. Перерыв на кофе. И ещё раз. Лезу в код функции.
Спасибо товарищу, который научил ругаться по-грузински — окружающие не понимают смысла. Ну почему в функцию имя поля должно передаваться в виде (field_name), а не field_name — без скобок?