5901
Моя девушка работает оператором ПК в поликлинике. Приезжаю как-то за ней, и меня просят глянуть на проблему: экселевская таблица «теряет» детей при экспорте в базу. Результаты нужно отправлять уже сегодня. Есть приказ: не расходиться, не закончив. Рядом с обещаниями выдать этилового эликсира сидит старшая медсестра.
Приезжает их «программист» — по сути такой же эникейщик, как и я. Пытаемся вместе решить проблему. Выявляется закономерность: ребёнок благополучно «садится» в базу, если между его ФИО нет пробелов, а есть единственный пробел перед фамилией. Проблема в макросах, но переписывать их нет прав — они приходят сверху. Перекладывать 700 человек руками — не вариант. Экселевские формулы, замена, вставка… Готово.
Следующий отчёт сдавать через месяц; макросы менять никто не собирается. Жалко мне медсестёр, да и вообще медицину страны в целом. Жду звонка.
5872
Нашему отделению запрещено разрабатывать и закупать ПО — всё присылают сверху. Некоторые самописные вещи приходится допиливать под наши реалии. Мне достался документооборот. Для него есть БД, в которой ни одна таблица никак не связана с любой другой. Есть документация к нему же, но она почему-то для предыдущей версии, благодаря чему имеется куча недокументированных функций. Конечно, в коде нет ни одного комментария.
При воскуривании этого дива я нашёл в функции обработки входящих документов процедуру записи в БД даты, номера документа и некоего рандомного значения от 1 до 1000. Любопытство взяло верх, и я связался с разработчиком. Самые страшные опасения оправдались: это поле использовалось для идентификации записей в таблице. С учётом того, что документов за год набегает за десять тысяч, волосы на затылке шевелятся.
— Ключевые поля и счётчик? Не, не слышал. А чем тебя рандом не устраивает?
5871
Года два с половиной назад я разработал для одного предприятия систему медицинского учёта. Сейчас периодически допиливаю в неё разнообразные фичи, нужные заказчику, и оказываю сопровождение. В общем, сотрудничаем к обоюдному удовольствию.
В процессе разработки посетила меня блажь, и втулил я в проект пасхальное яйцо: если на форме осмотра человека нажать Ctrl+Shift+Alt+C, то в хронических болезнях появится «цирроз печени на почве хронического алкоголизма». Сделал — и забыл за два года.
На днях пришло мне мыло, в котором оператор софтины спрашивает, нельзя ли сделать больше горячих клавиш на болезни. Дескать, циррозом у них мало кто болеет, а вот всякие сколиозы и другие остеохондрозы неплохо бы добавить. Не перевелись ещё юзеры с пытливым умом и ловкими лапками!
5835
Пишем узкоспециализированную программу. Команда маленькая, и обновления выходят когда придётся. Это «когда придётся» обычно наступает раз в несколько месяцев.
Один пользователь придумал оригинальный способ поторопить нас. С итальянского IP в течение месяца каждый день стучались на страницу «Download». А ведь полгода назад мы наладили автоматическую проверку обновлений…
5819
Работаем в специализированной госконторе, к которой специализированная программистская артель пишет специализированный софт. К софту идёт толстая инструкция. В инструкции по шагам рассказано, как ставить программу, как ей пользоваться, как обновлять.
Инсталлятор программы надо положить на диск C:. Windows должна быть только XP и только SP2. Антивирус должен быть отключён. Программа должна ставиться в папку C:\%programName%\, причём по умолчанию в инсталляторе стоит другой путь — его надо аккуратно стереть и вписать верный. Кнопку «Next» надо нажимать мышкой.
Несоблюдение любого из условий приводит к падению инсталлятора с невозможностью дальнейшей работы. Да-да, если нажать кнопку «Next» пробелом, а не мышкой, инсталлятор падает. Если во время работы переключаться по полям табом, а не мышкой, падает программа. Если вводить цифры с цифровой клавиатуры, они просто не введутся.
У программы есть саппорт, да. Пишешь, что программа не работает из Program Files — ответ приходит очень быстро. Рекомендуют установить программу в C:\%programName%\ и впредь следовать инструкции. Запрос на исправление проблемы с табом порождает такой же ответ.
Однажды, впрочем, нам удалось добиться от саппорта исправления ошибки. Программа неправильно записывала фамилии, содержащие дефисы. Отписали в саппорт, через неделю получили новую версию программы. В инструкции теперь написано, что в именах и фамилиях запрещено использовать дефисы.
5817
Россия окончательно перевела часы на летнее время. Вы думаете, наконец-то закончилось это издевательство над организмом? А вот и фигушки — некоторым людям переводить часы всё-таки придётся, причём в обратную сторону.
Всё дело в смартфонах четырёхлетней давности с мобильной виндой на борту. С одной стороны, винда точно знает, что в России есть переход на зимнее/летнее время, и по доброте душевной, дабы владелец не напрягался, сама переводит стрелки. С другой стороны, опции отключения функции автоматического перевода часов нет. С третьей стороны, винда знает, где она в данный момент находится, и точно уверена, что часы переводить надо. Обновить прошивку уже не получится — за давностью лет девайс никто не поддерживает.
Вот так вот и получается: разработчики стараются, делают удобные фишки для пользователей, а способы защиты от таких удобств продумать забывают.
5782
Есть и в наше время люди, которые о памяти не забывают. Игра в 56 байтах и компилятор в 20 — это, конечно, хорошо, но вот использует ли их кто-то реально?
Есть такой человек — Ричард Хипп, дай ему Бог здоровья и долгих лет жизни. Он знаменит созданием БД SQLite. Конечно, она занимает несколько больше — двести с чем-то КБ в архиве. Но в эти килобайты втиснута полноценная система управления базами данных с поддержкой SQL-синтаксиса, агрегатных функций, запросов с переменными и многого прочего. Используется SQLite кучей крупных компаний по всему миру.
Другой продукт Хиппа — система контроля версий Fossil. В архиве — полмегабайта, один файл. В этот файл влезает собственно система контроля версий, баг-трекер, вики-движок, а заодно и веб-сервер. Каждый раз, когда я использую эту систему, задумываюсь: как это всё удалось туда запихать? Любая из этих систем от других производителей в установочном файле будет занимать десятки метров. Может, этот загадочный файл изнутри больше, чем снаружи?
5744
Написал программку для внутреннего пользования — ничего необычного, просто считает данные по формулам. Оформил отдельным экзешником, выложил в корпоративную сеть. Люди пользуются, никто не жалуется.
Спустя три года раздался звонок.
— Я открываю вашу программу, а у меня на экране иероглифы!
Прихожу на место. С компа пользователя запускаю EXE — всё работает как часы, никаких иероглифов.
— Смотрите, всё в порядке. Видите?
— Да! А у меня не работает!
— Покажите, как вы с ней пытались работать, пожалуйста.
На голубом глазу пользователь запускает OpenOffice, открывает какой-то текстовый документ.
— И что?
— Видите? Я работаю с этой ведомостью. Мне надо посчитать вашей программой. Я её открываю, а на экране иероглифы!
«Файл → Открыть» — и в мой EXE тычет. Объясняю, что запускать программу надо двойным щелчком по иконке в Проводнике.
— А почему, когда я так открываю, на экране иероглифы? Почему ваша программа глючит? У меня нет времени переключаться в Проводник каждый раз!
Спорить бесполезно.
— Хорошо. Я учту ваши пожелания в следующей версии!
5705
Новый ноут, чистая система с оригинального дистрибутива с нормальным серийником. Дрова с официального сайта под нужную систему не ставятся ну ни в какую — все вылетают с разными ошибками:
«Система не удовлетворяет минимальным требованиям».
«Недостаточно места на диске».
«Не удаётся создать сетевой путь».
После нескольких часов догадок, мучений, проверок системы и прочего была найдена проблема: в переменных окружения %TEMP% и %TMP% буква диска была написана по-русски, а остальное — по-английски. Да, глупая ошибка, зато сколько разных методов её обработки инсталляторами мы узнали!
5663
Игра в 56 байт кода, говорите? Таки вот, есть (вернее, была) программа, которая моделировала вход шаттла в атмосферу Земли:
— интегрировала систему дифференциальных уравнений движения (3D, c учётом бокового маневра). Метод Эйлера, предиктор-корректор, экспоненциальная модель атмосферы;
— реализовывала простенький закон управления аппаратом: либо по крену, либо по углу атаки;
— рассчитывала тепловой поток на кромке крыла.
Итого — 105 байт кода и 15 float-переменных. Программируемый калькулятор МК-85, граждане. Одной переменной мне всё-таки не хватило, и шаг интегрирования всегда был равен секунде…
Памяти не бывает много. Но и мало её тоже не бывает — всегда можно найти решение проблемы.