6970
PowerBuilder. Клиентская программа. Звонит пользователь, жалуется на ошибку: не все данные выгружаются. Проверяю — действительно так. Обещаю разобраться.
Пытаюсь понять, как такое могло получиться, если это окно вообще не правилось, «хранимка» на сервере к нему — тоже. После двух с половиной часов нервного изучения кода нахожу примерное место возникновения ошибки, там же натыкаюсь на блестящий комментарий:
// Что за индусский код выше?
Нужно сказать, изначально код писали люди из сторонней компании, и таких комментариев хватает — я на него не обратила внимание сперва. На работе код могут поправить только два человека: я и мой коллега. Причем мы ведём лог внесённых изменений, чтобы в случае чего быстро найти, где и что менялось. Информации насчёт этого изменения этого отчёта не имелось, а коллега был в отпуске.
Дело было так: коллега увидел кривоватый код, решил подправить и, как вы уже догадались, об изменении умолчал. Вместо громоздких if он организовал всё через цикл for, но забыл внутри кусок старого кода: i = i + 1. Естественно, программа вместо выгрузки данных по всем фирмам по порядку начинала выгружать их через одну.
Я добавила коммент:
// Индусский код выше хотя бы правильно работал.
6946
Вспомнил, как работал эникейщиком в одном лечебном учреждении. Позвали меня в отдел кадров. Приказом сверху была установлена программа отчётности и учёта кадров, которая писала файлы на дискетки, а курьер вёз их в пенсионный фонд. На этой же машине стояла аналогичная программа, только для фонда обязательного медицинского страхования.
Программа для ПФР была установлена специально обученной девочкой, которая благополучно убедилась в её работоспособности и уехала. Всё было хорошо, пока кадровик не попыталась поработать с программой отчётности для ФОМС. Оказалось, что в базу данных программы невозможно ввести данные при попытке сохранения — возникает ошибка.
«Странно», — подумал я, но девочка из ПФР оставила ман в сто страниц А4. Решив начать по-хорошему, я сел и стал его вдумчиво курить. Где-то на 40-й странице я наткнулся на указание сменить стандартный разделитель целой и дробной частей в винде на запятую, иначе программа не будет работать. Открыл, смотрю — ага, всё верно. Сменил на точку — программа ФОМС заработала, но перестала работать программа ПФР, выдавая всю ту же ошибку сохранения данных. Теперь пожилая женщина-кадровик обучена переключать разделитель, а я проникся небывалой нежностью к отечественным программистам.
6888
Занимательно проходили у нас в школе уроки информатики на стареньких БК. В основном изучали предмет самостоятельно: алгоритмы, методы сортировки; баловались и играми на Бейсике.
Не знаешь какой-то оператор? Выкручивайся. Обычным делом было, например, пропустив изучение оператора позиционирования при печати (PRINT AT 10, 10), сдать задание, выводя десять раз перевод строки и нужный текст через пробел.
Шедевром была программа «крестики-нолики». Не придумав более-менее подходящего алгоритма ходов компьютера, мы начертили схему со всеми возможными ходами. Всего-то в 900 строк уложились. Хорошо, не возникла идея писать шахматы. Первый запуск не удался: сохранять программу на допотопной технике было нельзя, а к концу занятия, когда код был почти набран, кто-то дёрнул рубильник.
Так русские школьники и затыкали за пояс индусских программистов.
6646
Есть некая БД под суровым бесплатным линуксом. В ней — список абонентов, фамилии которых хранятся в транслите. Повадилась база эта валиться с ног. Едва ли не неделя ушла, чтобы понять, в чём же причина.
Свинью подложил абонент по фамилии Логинов. Передаём пламенный привет разработчику-индусу!
6578
Нашёл на просторах интернета виджет для стартовой страницы Яндекса с игрой «Кто хочет стать миллионером». Дай, думаю, поставлю. Установил, читаю первый вопрос: «В русских сказках медведя именовали…» Секунду колеблюсь, не ответить ли «Борис Николаевич», но выбираю-таки правильный вариант.
Текст, появивишийся после нажатия кнопки, сразил меня наповал: «Нет, вы ошиблись. Правильный ответ: undefined».
После ещё двух вопросов с таким же результатом виджет был снесён. Привет индийскому кодеру, который узнал свой творение!
6541
Говорите, Виндоус нелогичен? Чтобы выключить, надо кнопку «Пуск» нажать?
Читаем руководство по эксплуатации гамма-радиометра «Атомтех РКГ-АТ1320»:
5.8.1. Кнопка ВКЛ служит для включения и отключения радиометра. Для отключения радиометра следует три раза нажать на кнопку ВКЛ. На экране появится сообщение: «Выключить прибор?» Необходимо ещё раз нажать кнопку ВКЛ, и после этого произойдёт отключение радиометра.
Какие уж тут индусы…
6387
Помню, во времена учёбы в институте на специальности ИВТ был у меня на примете один паренек младше меня на курс — смышлёный, легкообучаемый, с нестандартным умом. В своей группе я был этаким гуру — энная часть курсовых лежала на мне. Недолго думая, я отдавал часть тому пареньку. Перед сдачей курсовика хозяину я всегда перечитывал исходники — с теорией уж Бог с ней…
Набрёл как-то на участок кода, где по ходу действия необходимо было сменить знак у числа. Его вариант решения был весьма неординарен:
var dig: Integer;
<…>
dig := dig − (dig * 2);
6266
Пишу программу для сдачи в институте. Работаю под Убунтой — мне так удобней, меньше отвлекающих вещей. Потребовалось установить одну вещицу из «Центра приложений». Запускаю его и вижу в списке рекомендуемого софта на втором месте индийскую экранную клавиатуру. Неужели это ждёт и меня?
6197
Работал в 2003 году на крупном заводе программистом. Вся бухгалтерия велась в системе, написанной руками программистов этого же завода. Любые изменения в законодательстве становились руководством к действию для всего программерского отдела — без дела сидеть не приходилось. Язык программирования, на котором писалось всё это чудо, был гениальным изобретением какой-то фирмы из Караганды. Выучить весь язык наизусть можно было за неделю, особо не напрягаясь; косяки этого языка — за месяц; ещё месяц уходил на исследование косяков документации. Весь отдел состоял из женщин средних лет и вчерашних студентов.
Одним из важнейших направлений в бухгалтерии — основными средствами, в том числе расчётом налогов, — занималась тогда молодая девушка, дочка одного из бухгалтеров. Не покладая рук, с упорством она разрабатывала новые расчёты и была для нас, молодёжи, чуть ли не примером. И вот как-то пошёл слух, что девушка уходит от нас в крупную энергетическую компанию, о зарплатах в которой слухи были очень впечатляющими. В голову приходили мысли: «Вот уровень человек набрал…» Вскоре нас стало на одного человека меньше.
К следующему году расчёт налогов стал выдавать конкретную галиматью. Разобраться в этом поручили мне. Открыл программу — и в глаза бросилась строчка типа if(year == 2003). В общем, судя по программе, после 2003 года завод мог налоги не платить. Cтало страшно: казалось, над городом нависла угроза энергетического кризиса.
6150
Только что наткнулась на кусок кода в нашем проекте:
// Не знаю, какое условие должно быть в if, но текущее не работает
if (false) /* (старое условие) */
{
20 строчек кода;
}
Cудя по дате изменения файла, работает уже не первый месяц, если не год. Индийский код? Наши ещё круче умеют.