Истории с тегом: программы

Всего историй: 796

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, граждане. Одной переменной мне всё-таки не хватило, и шаг интегрирования всегда был равен секунде…

Памяти не бывает много. Но и мало её тоже не бывает — всегда можно найти решение проблемы.