bash.im ithappens.me zadolba.li

Индийский код

6150

Как угодно, но не так

Только что наткнулась на кусок кода в нашем проекте:

// Не знаю, какое условие должно быть в if, но текущее не работает
if (false) /* (старое условие) */
{
20 строчек кода;
}

Cудя по дате изменения файла, работает уже не первый месяц, если не год. Индийский код? Наши ещё круче умеют.

6140

Не пеняйте на рожу

Лет десять назад я трудился в буржуйской конторе, не первый год разрабатывавшей большую систему для биллинга. Код писался уже не первым поколением разработчиков; ходили даже слухи, что первый релиз системы был портирован с айбиэмовского PL-I.

Приложение, которое досталось мне, было уже в полный рост на C++ и иногда весьма неслабо глючило. Реализовав требуюмую от меня функциональность, я решил всё-таки разобраться с глюками. Начал трассировку и после нескольких часов дебаггинга всё-таки отловил эксепшн. Я упал в код библиотеки, которая датировалась 92-м годом и использовалась во всех проектах конторы. Строчка кода, вызвавшая эксепшн, предварялась замечательным комментарием:

/* ugly, I know */

6122

Мир, труд, CRITICAL ERROR

Баннерная реклама нового авто известной немецкой марки. На счётчике — количество дней до премьеры новинки в этой стране. С первого числа мая все сайты с такой рекламой висят по неизвестной причине. При разборе полётов оказалось, что работает этот индийский код как надо только в апреле.

А теперь подсчитаем количество убытков компаний по всей стране, которым другие рекламодатели яростно выносят мозг за два дня без показа рекламы. Я думаю, серпы наточены, а яйца подстрижены. Готовимся к новым финтам великой студии.

6030

Готовимся играть в Starcraft

В школьные времена я занимался на клавиатурных тренажёрах. Учитель разрешил скопировать программы домой, чтобы позаниматься в спокойной обстановке. В школе стояли триста восемьдесят шестые, а дома был уже Пентиум. На нём в тренажёре TRK буквы падали так быстро, что подстрелить их не было никакой возможности. А вы говорите, трава была зеленее, не было быдлокодеров…

6016

Пустота — абсолютно бесплатно

Есть на просторах интернета сайт, продающий эксклюзивные вещи. Какие именно и за какие деньги — не так важно; важно то, что за несколько минут с момента открытия продаж все 50 штук уже раскуплены жаждущими.

— Хочу, — говорит мне жена.
— Окей, сейчас набросаю бота, он нам за десять секунд заказ оформит, никто опередить не сможет.

Открываю PHP, припоминаю cURL и начинаю ваять. Логинимся, кладём товар в корзину, оформляем. Тестируем на этом же сайте. Стоп, а почему у товара в корзине цена 0 долларов, а вес 0 граммов? Курю исходный код страницы. Джаваскрипт, джаваскрипт… Нет, даже индийский джаваскрипт, но это полбеды. Подсчёт веса? Подсчёт цены? Отправка на сервер?!

Правлю цену в скрипте, кладу в корзину. Сервер даже не думает проверить, что пришло ему из браузера. Я не знал, что такое бывает на самом деле.

6009

Первый круг индокодерского ада

Проходил недавно конкурс молодых программистов. Запомнился один проект, написанный на VB: тест и таймер, отсчитывающий время до конца. Программа работала. Попросили показать исходный код. Тут-то и открылась истинная сторона программиста! Код, реализующий трёхминутный таймер:

IF S='0:01' THEN S='0:00'
IF S='0:02' THEN S='0:01'
IF S='0:03' THEN S='0:02'

IF S='2:58' THEN S='2:57'
IF S='2:59' THEN S='2:58'
IF S='3:00' THEN S='2:59'

5999

Только так — и точка

Учусь в крупном государственном вузе на специальности «Информационные системы». В ходе выполнения лабораторных работ приходится использовать спецсофт, написанный в 2003 году такими же студентами в качестве курсового проекта.

Из справки одной из самых качественных программ:

При вводе дробных чисел разделение целой и дробной части осуществляется знаком «.» (точка). При этом надо ввести в поле «Пуск → Настройка → Панель управления → Язык и региональные стандарты → Разделитель целой и дробной части» символ «.» (точка).

Человек, написавший эту программу, сейчас преподаёт у нас на факультете. Вы до сих пор удивляетесь, откуда берутся быдлокодеры?

5872

На всё воля Рандома

Нашему отделению запрещено разрабатывать и закупать ПО — всё присылают сверху. Некоторые самописные вещи приходится допиливать под наши реалии. Мне достался документооборот. Для него есть БД, в которой ни одна таблица никак не связана с любой другой. Есть документация к нему же, но она почему-то для предыдущей версии, благодаря чему имеется куча недокументированных функций. Конечно, в коде нет ни одного комментария.

При воскуривании этого дива я нашёл в функции обработки входящих документов процедуру записи в БД даты, номера документа и некоего рандомного значения от 1 до 1000. Любопытство взяло верх, и я связался с разработчиком. Самые страшные опасения оправдались: это поле использовалось для идентификации записей в таблице. С учётом того, что документов за год набегает за десять тысяч, волосы на затылке шевелятся.

— Ключевые поля и счётчик? Не, не слышал. А чем тебя рандом не устраивает?

5819

Не нарушать, не трогать, не дышать

Работаем в специализированной госконторе, к которой специализированная программистская артель пишет специализированный софт. К софту идёт толстая инструкция. В инструкции по шагам рассказано, как ставить программу, как ей пользоваться, как обновлять.

Инсталлятор программы надо положить на диск C:. Windows должна быть только XP и только SP2. Антивирус должен быть отключён. Программа должна ставиться в папку C:\%programName%\, причём по умолчанию в инсталляторе стоит другой путь — его надо аккуратно стереть и вписать верный. Кнопку «Next» надо нажимать мышкой.

Несоблюдение любого из условий приводит к падению инсталлятора с невозможностью дальнейшей работы. Да-да, если нажать кнопку «Next» пробелом, а не мышкой, инсталлятор падает. Если во время работы переключаться по полям табом, а не мышкой, падает программа. Если вводить цифры с цифровой клавиатуры, они просто не введутся.

У программы есть саппорт, да. Пишешь, что программа не работает из Program Files — ответ приходит очень быстро. Рекомендуют установить программу в C:\%programName%\ и впредь следовать инструкции. Запрос на исправление проблемы с табом порождает такой же ответ.

Однажды, впрочем, нам удалось добиться от саппорта исправления ошибки. Программа неправильно записывала фамилии, содержащие дефисы. Отписали в саппорт, через неделю получили новую версию программы. В инструкции теперь написано, что в именах и фамилиях запрещено использовать дефисы.